2010-11-30 3 views
0

erreicht nicht eine Frage ähnlich wie dies Sah, geht so hier:restart Skript nach bestimmten Grenze

Lassen Sie uns sagen, ich bin ein Cron-Skript ausgeführt wird, und es hat das Potenzial, aus dem Speicher (64M) laufen oder Zeit (30 Sekunden). Gibt es eine Möglichkeit für das Skript, dies zu erkennen und sich selbst neu zu starten oder sich selbst umzuleiten?

+0

Skripte, die von CLI gestartet werden, haben normalerweise kein Zeitlimit und eine viel höhere Speichergrenze als 64M. – KingCrunch

Antwort

1

Ich gehe davon aus das auf irgendeine Art von Unix läuft so, wenn Sie Ihre PHP-Aufruf mit so etwas wie dieses wickeln:

#!/bin/sh 
# specify the full path and params below. 
safe_exec() 
{ 
    if /bin/ps -axww | /usr/bin/grep "$*" | /usr/bin/grep -v grep > /dev/null; then 
     # the specified script running, don't start it again 
     return 
    else 
     # run 
     $* 
    fi 
} 
safe_exec php /path/to/your/php/script.php 

Ihre timed cron wird das Skript jedes Mal, neu starten, so lange es läuft noch nicht.

Eine weitere Option ist die Optimierung Ihres Skripts. Wenn es unendlich while(true) {} looping und Ram ausgeht, tut es etwas schlechtes und wird dementsprechend gehandhabt.

Wenn Sie keine Zeit mehr haben, sollten Sie max_execution_time über set_time_limit() 0 für Ihr CLI-Skript festlegen.

Verwandte Themen