2010-11-30 6 views
0

N'a pas voir une question semblable à cela, donc voilà:script restart après avoir atteint certaines limites

Disons que je suis en cours d'exécution d'un script cron, et il a le potentiel de manquer de mémoire (64 Mo) ou le temps (30 secondes). Est-il possible pour le script de détecter cela et de se relancer, ou de se rediriger vers lui-même?

+0

Les scripts démarrés à partir de CLI n'ont généralement pas de limite de temps et une limite de mémoire beaucoup plus élevée que 64M. – KingCrunch

Répondre

1

Je suppose que cela fonctionne sur une sorte de unix donc si vous enveloppez votre appel php avec quelque chose comme ceci:

#!/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 

Votre Cron chronométré redémarrera le script chaque fois, aussi longtemps que ça ne marche toujours pas.

Une autre option consiste à optimiser votre script. Si c'est en boucle infinie while(true) {} et à court de RAM, il fait quelque chose de mal et être géré en conséquence.

Si vous manquez de temps, vous devez définir max_execution_time via set_time_limit() 0 pour votre script CLI.

Questions connexes