2009-06-04 9 views
6

Ein Kunde möchte, dass ich seinen Twitter-Stream auf seiner Website Homepage mit einer benutzerdefinierten Lösung in PHP integriert hinzufügen.Wie kann man die Twitter API am besten über PHP nutzen?

Die Twitter-API hat offensichtlich eine begrenzte Anzahl von Anrufen pro Stunde, sodass ich nicht jedes Mal, wenn jemand die Homepage meines Kunden aktualisiert, automatisch Twitter anpingen kann.

Die Website des Kunden ist zur Zeit rein HTML und so ist keine Datenbank verfügbar. Meine Lösung muss daher nur PHP und das lokale Dateisystem benötigen (z. B. das Speichern einer lokalen XML-Datei mit einigen Daten).

Also, was ist der beste Weg für mich, auf diese Twitter-API zuzugreifen - über PHP -, ohne innerhalb von ein paar Minuten mein API-Calllimit zu erreichen?

+0

Nur um zu verdeutlichen: Ich bin nicht Leute bitten, dies für mich zu schreiben! :) Es ist nur eine lange Zeit her, seit ich PHP gemacht habe, also versuche ich, Best Practice zu bekommen, um dieses spezielle Problem anzugehen. Vielen Dank im Voraus für irgendwelche Einblicke oder Vorschläge. – markedup

+0

"Lokales Dateisystem" - dies wäre der Server selbst. "Sever Setup" - Ich kann nichts anderes berühren als das, was über FTP erreichbar ist (also kein cPanel oder Cron, etc.). – markedup

+0

Sorry, "Server-Setup" sollte "Server-Setup" sein. – markedup

Antwort

3

Es wird ganz einfach sein, wenn Sie eine Zeitleiste nach unten ziehen kann, und zeigen Sie es, dann, um es einige dateibasierte-Caching hinzuzufügen.

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 tun alles, was Sie auf der Caching-Schicht benötigen.

0
  1. ein Cron-Job (nicht likley - wenn es gibt nicht einmal eine Datenbank, dann gibt es keine Cron-Jobs)
  2. schreiben die microtime() in eine Datei. Vergleichen Sie in einer Seitenansicht den aktuellen Zeitstempel mit dem gespeicherten. Ist der Unterschied größer als N Minuten, ziehen Sie den neuen Tweetfeed und schreiben Sie den aktuellen Zeitstempel in die Datei
  3. Wenn die Titelseite eine statische HTML-Datei ist, die keinen PHP aufruft, fügen Sie ein Bild <img src="scheduler.php"/> hinzu, das ein 1px transparentes GIF (at Mindeste, was Sie taten es auf diese Weise, als ich jung war) und haben Ihre

    oder meinen Sie lokales -local Dateisystem, wie es in „my/dem Kunden-Computer nicht der Server“ -local leise

twitter-ziehen?

in diesem Fall:

  1. einige Server mit einem Cron-Job oder Scheduler und PHP
  2. ein Skript schreiben, erhalten, die das Futter in eine Datei liest und speichert
  3. die Datei an den Kunden-Server schreiben mit FTP
  4. den Feed mit Javascript anzeigen (ja, Ajax funktioniert auch mit statischen Dateien als Datenquellen). jquery oder einige lib ist für diese
  5. oder: Erstellen Sie den Tweet-Anzeigen von HTML-Datei lokal und laden Sie sie (aber vorsichtig sein ... weil Sie Updates auf dem Server überschreiben kann)

imo: für kleine Websites, die Sie oft einfach nicht brauchen, eine voll gewachsene SQL-Datenbank sowieso. Dateisysteme sind großartig. eine Kombination von scandir, preg_match und sorgfältig ausgewählten Dateinamen sind oft gut genug.
und Sie können tatsächlich viel Front-End-Verarbeitung (wie die Anzeige von XML) mit schönen Javascript.

0

Da wir Ihre Server-Konfiguration nicht kennen, empfehle ich Ihnen, einen Cron-Job einzurichten (vorausgesetzt, Sie haben eine Linux-Box). Wenn Sie in einer Shared Hosting-Umgebung etwas wie cPanel haben, sollte das kein großes Problem darstellen. Sie müssen ein Skript schreiben, das von cron aufgerufen wird und das die neuesten Tweets erhält und in eine Datei schreibt (xml?). Sie können festlegen, dass Cron alle 30 Minuten ausgeführt wird. oder was immer du willst.

0

Sie können TweetPHP von Tim Davies verwenden. http://lab.lostpixel.net/classes/twitter/ - Diese Klasse verfügt über viele Funktionen, einschließlich der gewünschten, und zeigt die Zeitlinie Ihrer Kunden an. Die Seite zeigt gute Beispiele zur Verwendung.

Sie können dann die Ausgabe von diesem in eine Datei oder Datenbank legen. Wenn der Site-Besucher die Datenbank oder die Datei wie alle 5 Minuten aktualisieren soll, können Sie eine Sitzungsvariable mit einem Zeitstempel einrichten und nur ein weiteres Update zulassen, wenn der Zeitstempel mindestens 5 Minuten zurückliegt.

this helps

0

Mein Vorschlag: Erstellen Sie ein kleines einfaches Objekt, um das Cache-Datum und ein Array von Tweets zu halten. Jedes Mal, wenn jemand die Seite besucht, führt er die folgende Logik aus:

A) Existiert eine Datei?

Ja: Lesen Sie es in eine Variable No: Gehen Sie zu Schritt d)

B) unserialize die Variable (die PHP Paar serialize()/unserialize() würde nur gut tun)

C) Vergleiche das Alter des gespeicherten Caches mit der aktuellen Zeit (ein Unix-Zeitstempel würde es tun) Es sind über 5 Minuten voneinander entfernt:

D) Hol dir die neuesten Tweets von Twitter, aktualisiere das Objekt, serialisiere es und schreibe auf der Cache erneut. Speichern Sie die neuesten Tweets auch zum Drucken. Es ist nicht: Lesen Sie einfach die Tweets aus dem Cache.

E) drucken die Tweets

einfachste und einfachste Weg, um das Objekt zu serialisieren ist die serialize()/unserialize() Paar. Wenn Sie nicht bereit sind, die Mühe zu verschieben, um das Objekt zu erstellen, könnten Sie einfach 2D-Array verwenden, serialize() wird gut funktionieren. Werfen Sie einen Blick auf http://php.net/serialize

In Anbetracht der Tatsache, dass Sie keinen Zugriff auf cPanel haben, ist dies die beste Lösung, da Sie keinen Zugriff auf PEAR-Pakete, Cron oder andere einfachere Lösungen haben.

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

jetzt in Ihrem Code setzen eine Überprüfung, ob der Zeitstempel in dem Datenspeicher für lastrequest mehr als X Sekunden alt ist. Wenn es dann an der Zeit ist, Ihre Daten zu aktualisieren.

serialisieren und speichern Sie das Array in einer Datei, ziemlich einfach

Verwandte Themen