2009-06-04 11 views
6

एक ग्राहक मुझे PHP में निर्मित एक कस्टम समाधान का उपयोग करके, अपनी वेबसाइट होमपेज पर अपनी ट्विटर स्ट्रीम जोड़ना चाहता है।PHP के माध्यम से ट्विटर एपीआई का उपयोग करने का सबसे अच्छा तरीका क्या है?

ट्विटर एपीआई में स्पष्ट रूप से सीमित संख्या में कॉल हैं जो आप प्रति घंटे कर सकते हैं, इसलिए जब भी कोई मेरे क्लाइंट के मुखपृष्ठ को रीफ्रेश करता है तो मैं स्वचालित रूप से ट्विटर को पिंग नहीं कर सकता।

इस समय ग्राहक की वेबसाइट पूरी तरह से HTML है और इसलिए कोई डेटाबेस उपलब्ध नहीं है। इसलिए मेरे समाधान को केवल PHP और स्थानीय फ़ाइल सिस्टम की आवश्यकता होनी चाहिए (उदा। इसमें स्थानीय डेटा फ़ाइल को कुछ डेटा के साथ सहेजना)।

तो, इस सीमित मानदंड को देखते हुए, ट्विटर एपीआई तक पहुंचने के लिए मेरे लिए सबसे अच्छा तरीका क्या है - PHP के माध्यम से - कुछ मिनटों में मेरी एपीआई कॉल सीमा को मारने के बिना?

+0

स्टोर बस स्पष्ट करने के लिए: मैं लोगों से नहीं कर रहा हूँ मेरे लिए यह लिखने के लिए! :) यह एक लंबा समय है क्योंकि मैंने कोई PHP किया है, इसलिए मैं इस विशेष समस्या से निपटने के लिए सर्वोत्तम अभ्यास पर तेजी लाने की कोशिश कर रहा हूं। किसी अंतर्दृष्टि या सुझावों के लिए अग्रिम धन्यवाद। – markedup

+0

"स्थानीय फाइल सिस्टम" - यह सर्वर ही होगा। "सेवर सेटअप" - मैं एफ़टीपी पर पहुंचने योग्य चीज़ों के अलावा कुछ भी नहीं छू सकता (इसलिए कोई सीपीनल या क्रॉन इत्यादि नहीं)। – markedup

+0

क्षमा करें, "सेवर सेटअप" होना चाहिए "सर्वर सेटअप"। – markedup

उत्तर

3

यह काफी आसान हो जाएगा एक बार आप एक समय नीचे खींच सकते हैं और प्रदर्शित यह है, तो यह करने के लिए कुछ फ़ाइल आधारित कैशिंग जोड़ने के लिए।

check age of cache 
Is it more than 5 mins old? 
    fetch the latest information 
    regenerate the HTML for output 
    save the finished HTML to disk 
display the cached pre-prepared HTML 

PEAR's Cache_Lite आपको कैशिंग परत पर सभी की आवश्यकता होगी।

0
  1. एक क्रॉन जॉब (likley नहीं - वहाँ भी एक डेटाबेस नहीं है अगर, तो कोई क्रॉन नौकरियों कर रहे हैं)
  2. एक फाइल करने के लिए microtime() लिखें। पृष्ठ दृश्य पर सहेजे गए समय पर वर्तमान टाइमस्टैम्प की तुलना करें। यह एन मिनट से अधिक अंतर है, नया ट्वीट ट्वीट खींचें और फ़ाइल
  3. पर वर्तमान टाइमस्टैम्प लिखें यदि फ्रंट पेज एक स्थिर एचटीएमएल फ़ाइल है जो किसी भी PHP को कॉल नहीं कर रहा है, तो एक छवि <img src="scheduler.php"/> है जो 1px पारदर्शी gif (at कम से कम आप इसे इस तरह से किया था जब मैं छोटा था) और "सर्वर नहीं मेरी/ग्राहकों कंप्यूटर" -local में अपने चुपचाप

चहचहाना-खींच या आप स्थानीय -local फाइल सिस्टम मतलब है, के रूप में करता है?

इस मामले में

:

  1. एक क्रॉन जॉब या अनुसूचक और PHP के साथ कुछ सर्वर मिल
  2. एक स्क्रिप्ट है कि पढ़ता है और एक फाइल करने के लिए फ़ीड की बचत होती है
  3. ग्राहकों सर्वर से फ़ाइल लिखने बारे में एफ़टीपी
  4. जावास्क्रिप्ट का उपयोग करके फ़ीड प्रदर्शित करें (हाँ, AJAX डेटासेट के रूप में स्थैतिक फ़ाइलों के साथ भी काम करता है) का उपयोग कर। jQuery या कुछ lib के लिए अच्छा है इस
  5. या: ट्वीट-प्रदर्शित html फ़ाइल स्थानीय रूप से बना सकते हैं और इसे अपलोड (लेकिन सावधान रहना ... क्योंकि आप सर्वर पर अपडेट को ओवरराइट कर सकता है)

imo: छोटे के लिए जिन साइटों को आप अक्सर पूरी तरह से विकसित एसक्यूएल डेटाबेस की आवश्यकता नहीं है। फाइल सिस्टम बहुत अच्छे हैं। scandir का संयोजन, preg_match और सावधानी से चुने गए फ़ाइल नाम अक्सर काफी अच्छे होते हैं।
और आप वास्तव में सुंदर जावास्क्रिप्ट का उपयोग कर बहुत से फ्रंट-एंड प्रोसेसिंग (जैसे एक्सएमएल प्रदर्शित करना) कर सकते हैं।

0

चूंकि हम आपके सर्वर कॉन्फ़िगरेशन को नहीं जानते हैं, इसलिए मेरा सुझाव है कि आप एक क्रॉन जॉब सेट करें (लिनक्स बॉक्स पर अपना मान लें)। यदि आपके पास साझा होस्टिंग वातावरण पर सीपीनल की तरह कुछ है, तो इससे कोई समस्या नहीं होनी चाहिए। आपको क्रॉन द्वारा बुलाए जाने वाली एक स्क्रिप्ट लिखनी होगी और उसे नवीनतम ट्वीट मिलेंगे और उन्हें एक फ़ाइल (xml?) में लिखना होगा। आप प्रत्येक 30 मिनट चलाने के लिए क्रॉन शेड्यूल कर सकते हैं। या आप जो भी चाहते हैं।

0

आप टिम डेविस द्वारा TweetPHP का उपयोग करना चाह सकते हैं। http://lab.lostpixel.net/classes/twitter/ - इस कक्षा में आपके ग्राहकों को समय-सारिणी दिखाते हुए कई सुविधाएं शामिल हैं। पृष्ठ यह उपयोग करने के तरीके पर अच्छे उदाहरण दिखाता है।

फिर आप इसे फ़ाइल या डेटाबेस में आउटपुट डाल सकते हैं। यदि आप साइट विज़िटर को डेटाबेस या प्रत्येक 5 मिनट की तरह फ़ाइल को अपडेट करने के लिए चाहते हैं, तो आप टाइमस्टैम्प वाले सत्र चर सेट कर सकते हैं और टाइमस्टैम्प कम से कम 5 मिनट पहले यदि कोई अन्य अपडेट की अनुमति दे सकता है।

आशा इस मदद करता है

0

मेरा सुझाव: कैश दिनांक और ट्वीट्स की एक श्रृंखला को पकड़ने के लिए एक छोटी सी सरल वस्तु बनाएं। प्रत्येक बार जब कोई पृष्ठ पर जाता है, तो यह निम्न तर्क करता है:

ए) क्या फ़ाइल मौजूद है?

हाँ: एक चर में पढ़ें नहीं: डी कदम)

बी) Unserialize चर (पीएचपी जोड़ी serialize (/ unserialize() ठीक करना होगा)

सी) के लिए आगे बढ़ें) वर्तमान समय के साथ संग्रहीत कैश की आयु की तुलना करें (एक यूनिक्स टाइमस्टैम्प यह करेगा) एक दूसरे से 5 मिनट से अधिक:

डी) ट्विटर से नवीनतम ट्वीट प्राप्त करें, ऑब्जेक्ट अपडेट करें, इसे क्रमबद्ध करें और लिखें कैश फिर से। प्रिंटिंग के लिए नवीनतम ट्वीट्स भी स्टोर करें। इसकी नहीं: बस कैश से ट्वीट पढ़ें।

ई) प्रिंट ट्वीट्स

सरल और आसान तरीका है वस्तु को क्रमानुसार करने serialize()/unserialize() जोड़ी है। यदि आप ऑब्जेक्ट बनाने के प्रयास को छोड़ने के इच्छुक नहीं हैं, तो आप केवल 2 डी सरणी का उपयोग कर सकते हैं, serialize() ठीक काम करेगा। http://php.net/serialize

पर विचार करें कि आपके पास कोई सीपीनल पहुंच नहीं है, यह सबसे अच्छा समाधान है क्योंकि आपके पास पीयर पैकेज, क्रॉन या किसी अन्य सरल समाधान तक पहुंच नहीं होगी।

0
array(
'lastrequest' => 123, 
'tweets' => array() 
) 

अब आपके कोड में यह जांचने के लिए एक चेक डालें कि क्या अंतिम बार के लिए डेटास्टोर में टाइमस्टैम्प X सेकंड से अधिक पुराना है। यदि यह आपके डेटा को अपडेट करने का समय है।

serialize और एक फ़ाइल में सरणी, बहुत सरल

संबंधित मुद्दे

 संबंधित मुद्दे