15 Stimmen

Skripte ohne CRON einplanen

Ich weiß, dass es viele Beiträge über die Verwendung von CRON zur Ausführung einer php-Datei gibt. Aber in der Welt des Shared Hosting und der einfachen Einrichtung für einen Benutzer möchte ich mich nicht damit herumschlagen müssen.

Ich habe online eine andere Lösung gefunden, die mit Steckdosen zu tun hat. Wollte nur jeder nehmen auf diese, und sagen Sie mir, wenn dies eine gute oder schlechte Idee ist. Klingt wie es gut funktioniert.

Was denken Sie?

//Open socket connection to cron.php
$socketcon = fsockopen($_SERVER['HTTP_HOST'],80,$errorno,$errorstr,10);
if($socketcon) {
$socketdata = "GET /cron.php HTTP 1.1\r\nHost: ".$_SERVER['HTTP_HOST']."\r\nConnection: Close\r\n\r\n";
fwrite($socketcon,$socketdata);
//Normally you would get all the data back with fgets and wait until $socketcon reaches feof.
//In this case, we just do this:
fclose($socketcon);
} else {
//something went wrong. Put your error handler here.
}

cron.php:

//This script does all the work.
sleep(200);
//To prove that this works we will create an empty file here, after the sleep is done.
//Make sure that the webserver can write in the directory you're testing this file in.
$handle = fopen('test.txt','w');
fclose($handle);

Ich habe das Skript in einem Blogbeitrag gefunden: http://syn.ac/tech/13/creating-php-cronjobs-without-cron-and-php-cli/

0voto

Geoffrey Bachelet Punkte 3747

Wenn ich das richtig verstanden habe, würden Sie das erste Skript von einem entfernten Rechner aus ausführen und damit das zweite Skript, das auf Ihrem Cron-deaktivierten Rechner gehostet wird, angreifen? Dann, dank eines Fehlers oder einer merkwürdigen Funktion der php/Webserver-Interaktion, wenn Sie die Verbindung sofort schließen, würde das Skript keine Zeitüberschreitung verursachen?

Der erste Teil ist recht gängige Praxis, es gibt sogar Unternehmen, die genau diese Dienstleistung anbieten ( http://www.webcron.org/index.php?lang=english z. B. stößt automatisch jedes Skript an, das Sie wollen, und zwar zu jeder Zeit, die Sie verlangen (gegen eine Gebühr).

Der zweite Teil ist mir unbekannt. Das scheint mir ein Fehler im Zusammenspiel von php und Webserver zu sein, aber ich könnte mich irren. Wie auch immer, ich würde überprüfen, ob es ein Fehler ist oder nicht (Moment, das ist, was Sie gerade tun, nicht wahr?) und wenn es sich als legitimes Verhalten erweist, dann machen Sie es. Wenn es ein Bug zu sein scheint, dann verlassen Sie sich nicht darauf, da es sein könnte fest zu jeder Zeit.

0voto

mgutt Punkte 5317

Ich habe mehrere Tage gebraucht, um eine funktionierende Lösung zu finden, ohne dass es zu Wettlaufbedingungen kommt und/oder mein eigener Server überflutet wird, aber schließlich denke ich, dass dies funktionieren sollte:
http://www.programmierer-forum.de/phpcron-cronjobs-ohne-crontab-t348377.htm

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X