2009-06-24 5 views
0

Ich speichere gerade einige Twitter-Daten in MySQL. Mein Host lässt mich nur Cron-Jobs jede Stunde ausführen, um die Echtzeitergebnisse halb simulieren zu können, habe ich dieselbe Datei 6 Mal kopiert und alle 10 Minuten eine ausgeführt (der Host erlaubt es Ihnen, den Stunden-Offset zu steuern). Das ist dumm, denke ich.Was ist der beste Weg, um die Daten von Twitter zu bekommen?

Gibt es einen Mechanismus, über den ich die Daten auf meine Art weitergeben könnte? Irgendwelche Gedanken oder Vorschläge willkommen.

(steuerte ich habe mich weg von nur ihre Server mit jedem Seitenaufruf abfragt, ich genug weiß, das ist eine schlechte Praxis zu kennen)

Antwort

1

Wie über eine Webseite zugreifen (was wiederum das Programm ausführen) gehostet auf dem Server auf Client-Seite zu cron Hinzufügen (Home-System):

/usr/bin/curl http://yourserver.com/twitter 

Ansonsten können Sie die folgenden bash-Skript jede Stunde laufen:

#!/bin/bash 

for ((i = 0; i < 6; i += 1)); do 
    /usr/bin/curl 'http://yourserver.com/twitter' 
    sleep 600 
done 
0

A Eine relativ einfache Lösung besteht darin, einen Cron-Job auf einem anderen Computer auszuführen. Es würde die Anfragen an Twitter ausführen und dann einen HTTP POST zu einer bestimmten Seite auf dem Server ausführen (z. B. http://foo.com/latestTwitterData). Natürlich möchten Sie eine Authentifizierung, um zu verhindern, dass zufällige Mist an Sie gesendet werden.

Ich weiß nicht, ob dies für Ihre Situation angemessen ist.

-1

Es ist ziemlich einfach, Code jede Sekunde oder so zu laufen.

+0

Wie beantwortet das die Frage? Er darf keinen Daemon ausführen. Zweifellos würde jeder unendlich laufende Prozess von seinem ISP umgebracht werden. –

+0

Wo war das in der Frage angegeben? –

-1

Warum nicht einfach eine While-Schleife in Ihr Programm einfügen und dann zwischen zwei Sekunden schlafen, wie lange Sie die Updates benötigen? Sie können dann nach 59 Minuten 30 Sekunden sterben.

Alternativ können Sie das Kopieren mehrerer Dateien optimieren, indem Sie mehrere Aufrufe innerhalb der einzelnen Cron-Zeile zu Ihrem Programm hinzufügen. Etwas wie:

./prog.pl; sleep 60; ./prog.pl

+0

In welches Programm? Er läuft auf einem Server und kann nur Cron-Jobs haben und/oder auf Anfragen antworten. –

+0

Was meinst du mit welchem ​​Programm? Ein Skript oder Programm, das Aufrufe aufruft, verarbeitet, in eine Datenbank einfügt usw. –

1

können Sie sanely twitter Daten ausgelöst von Ihren Anfragen ziehen. Es ist ein wenig esoterisch, aber im Wesentlichen speichern Sie Daten in einer Tabelle, um sicherzustellen, dass nur eine Anfrage die Daten von Twitter alle N Minuten (oder wann immer Sie es brauchen) abfragt. Beispiel:

  1. Antrag prüft, ob neue Twitter-Daten abgerufen werden müssen
  2. prüfen Sperrtabelle zu sehen, ob eine weitere Anforderung bereits spricht Datensatz twittern
  3. In Tabelle zu sperren. Stellen Sie sicher, dass Daten in einer Spalte angegeben werden, die über eine Datenbankeinschränkung als eindeutig festgelegt ist. Dies wird Sie davon abhalten, zwei Sperren zu machen.
  4. Mit Twitter sprechen, speichern Sie twitter Daten.
  5. Remove Lock Rekord

Für Geschwindigkeit, sicherzustellen, dass Ihre Sperrtabelle im Speicher oder stattdessen Memcached verwenden. Natürlich, wenn Sie Memcached verwenden können, haben Sie wahrscheinlich die volle Kontrolle über Cron sowieso. :)

Verwandte Themen