2011-01-10 4 views
2

Ich habe ein Skript, das Informationen über API kriecht. Ich möchte dieses Skript kontinuierlich ausführen, um Daten zu erfassen und auf meinem lokalen Computer zu speichern. Ich konfigurierte Maschine als localhost und installierte phpmyadmin und MySQL.Wie führe ich ein PHP-Skript kontinuierlich auf localhost?

+1

Wenn Sie einen Nix verwenden, können Sie das Skript als Cron-Job einrichten. – prodigitalson

+2

Unter Windows können Sie anstelle eines Cronjobs eine geplante Aufgabe verwenden. –

Antwort

4

Wahrscheinlich möchten Sie es von der command line ausführen. Setzen Sie Ihren Code in eine Art Schleife, um ihn immer in Betrieb zu halten, oder planen Sie ihn so, dass er als Cron-Job/geplante Aufgabe ausgeführt wird.

+0

Dies ist eine Windows-Maschine und mein scrypt ist in Schleife, so wird es für zwei drei Stunden laufen, aber danach Internet Explorer stoppt/wenn firefox dann stürzt es – mathew

+0

Sie können immer noch von der Befehlszeile auf Windows ausführen. – mfonda

+0

Sie möchten auch das Skript beim Neustart initialisieren. Ich habe so etwas für Dämonen auf Linux-Systemen getan. – dqhendricks

2

Wickeln Sie Ihren Haupt-Code, mit Ausnahme von Funktionen, Klassen, etc., in dieser:

while (true) { 

und diese:

sleep(2); 
} 

Dann ist es von der Kommandozeile ausgeführt werden, unter Verwendung von:

$ php myscript.php 

Wenn Sie Windows verwenden, müssen Sie PHP manuell zu Ihrem PATH hinzufügen. Ich kenne Windows nicht (ich benutze mein ganzes Leben lang einen Mac), aber ich denke, Sie können dies in den Eigenschaften von My Machine tun. :)

+0

Ich habe am Anfang Schlaffunktion hinzugefügt, als ich dieses Skript für lange Zeit ausgeführt habe. aber was passiert, ist die Anzahl der Daten, die es aufgrund der Schlaffunktion weniger ergreift. Gibt es noch andere Alternativen? – mathew

+0

Setzen Sie Sleep auf einen niedrigeren Wert wie 0.5 oder entfernen Sie es vollständig, was dazu führt, dass Ihr Skript einen DDoS-Angriff ausführt. :) aber bitte seien Sie vorsichtig mit zu vielen Anfragen, da Sie möglicherweise von der API ausgeschlossen werden. –

+0

Wie lege ich einen Pfad in die Befehlszeile? Mein Pfad ist c: \\ Apache \ www \ – mathew

0

Verwenden Sie anstelle einer php-Schleife eine Batchfile-Schleife. .

Dies geht um irgendwelche set_time_limit, maximale Speicher usw. Probleme. Wenn php abstürzt, kein Problem, eine neue Instanz wird sofort gestartet.

@echo off 
:loop 
php myScrapeScript.php 
goto loop;