web-dev-qa-db-de.com

skriptausführung unbegrenzt machen

Ich muss ein Script in localhost (xampp) ausführen, das 14400 Datensätze generiert und in die Datenbank hinzufügt. Ich habe den max_execution_time = 50000000000 gesetzt. Ich weiß nicht, ob ich ihn unbegrenzt machen kann, indem ich ihn auf 0 oder -1 setze. Aber ich habe dieses Skript zuvor mit dieser max_execution_time bis 50000000000 ausprobiert und trotzdem wurde es an einem bestimmten Punkt gestoppt. Ich weiß nicht, was die Ausführungszeit sonst noch einschränken könnte. Ich habe dies schon oft ausgeführt und bin es müde zu warten und wieder zu scheitern sollte ich ändern, bevor ich dieses Skript erneut ausführen kann, und diesmal den Job beenden?

44
TooCooL

Sie müssen es auf Null setzen. Null bedeutet, dass das Skript für immer ausgeführt werden kann. Fügen Sie am Anfang Ihres Skripts Folgendes hinzu:

ini_set('max_execution_time', 0);

Weitere Informationen finden Sie in der PHP Dokumentation von max_execution_time

Beachten Sie, dass:

set_time_limit(0);

wird den gleichen Effekt haben.

114
hek2mgl

Ihr Skript könnte angehalten werden, nicht wegen des Timeouts von PHP, sondern wegen des Timeouts im Browser, den Sie für den Zugriff auf das Skript verwenden (z. B. Firefox, Chrome usw.). Leider gibt es selten eine einfache Möglichkeit, dieses Timeout zu verlängern. In den meisten Browsern ist dies einfach nicht möglich. Sie haben hier die Möglichkeit, über ein Terminal auf das Skript zuzugreifen. Unter Windows würden Sie zum Beispiel sicherstellen, dass sich die ausführbare Datei PHP in Ihrer Pfadvariablen befindet. Ich denke, Sie führen Folgendes aus:

C:\path\to\script> php script.php

Oder wenn Sie die CGI PHP verwenden, denke ich:

C:\path\to\script> php-cgi script.php

Außerdem würden Sie ini_set('max_execution_time', 0); in Ihrem Skript festlegen, wie andere bereits erwähnt haben. Wenn Sie ein PHP -Skript auf diese Weise ausführen, bin ich ziemlich sicher, dass Sie die Pufferung verwenden können, um den Fortschritt des Skripts periodisch an das Terminal auszugeben, wenn Sie möchten. Das größte Problem, das ich mit dieser Methode denke, ist, es gibt wirklich keine Möglichkeit, das Skript nach dem Start zu stoppen, außer den gesamten Prozess oder den gesamten PHP - Prozess zu stoppen.

0
Peter Cullen