2017-09-26 16 views
0

Pour surveiller l'max_execution_time d'un script particulier, j'utilisePHP ini_set max_execution_time nog fonctionne correctement?

ini_set('max_execution_time', 600); //600 seconds = 10 minutes

en haut de mon script. Cependant, quand je construis une exploitation forestière du même fichier, il me renvoie le message suivant:

25-09-2017 23:08:01|STARTED 
25-09-2017 23:09:01|ALREADY RUNNING 
25-09-2017 23:10:01|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 01:09:01|ALREADY RUNNING 
26-09-2017 01:10:01|ALREADY RUNNING 
26-09-2017 01:11:01|STARTED 
26-09-2017 01:12:01|ALREADY RUNNING 
26-09-2017 01:13:01|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 03:10:01|ALREADY RUNNING 
26-09-2017 03:11:01|ALREADY RUNNING 
26-09-2017 03:12:01|STARTED 
26-09-2017 03:13:01|ALREADY RUNNING 
26-09-2017 03:14:02|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 05:09:01|ALREADY RUNNING 
26-09-2017 05:10:02|ALREADY RUNNING 
26-09-2017 05:11:01|STARTED 
26-09-2017 05:12:01|ALREADY RUNNING 
26-09-2017 05:13:02|ALREADY RUNNING 
26-09-2017 05:14:01|ALREADY RUNNING 
...................|ALREADY RUNNING 
26-09-2017 07:14:01|ALREADY RUNNING 
26-09-2017 07:15:01|ALREADY RUNNING 
26-09-2017 07:16:01|STARTED 

Le ...................|ALREADY RUNNING représente plusieurs messages répéter chaque minute entre les deux. Qu'est-ce que je fais de mal, puisque l'intervalle n'est pas de 10 minutes de loin?

EDIT:

La boucle while je:

while (true) { 
    //DO PROCESSING WHEN FILES ARE PRESENT 
    Sleep(1); 
    } 
+0

Avez-vous vérifié quelle est votre limite de temps réelle avec phpinfo(), et en chargeant la page avec un navigateur? Si vous exécutez php-fpm et nginx ou quoi que ce soit sur les anciennes limites "Apache et PHP", les limites de temps réelles peuvent être définies, et remplacer PHP propre php.ini, ailleurs où. – DocWeird

+0

@DocWeird, je cours le script avec un cronjob. Le phpinfo indique que le max. l'heure d'exécution est définie sur 30 pour la valeur locale et la valeur principale. –

+1

Utilisez-vous sleep -command dans le script? IIRC utilisant le sommeil n'augmente pas le temps d'exécution. – DocWeird

Répondre

1

Il suffit de vérifier le temps d'exécution manuellement.

$max_exec_time = 600; 

$start_time = time(); 
while (true) { 
    do_something(); 
    sleep(1); 
    if (time() - $start_time > $max_exec_time) { 
    exit; 
    } 
} 
+0

C'est vraiment une bonne idée! Merci..! Des inconvénients connus pour cette approche à considérer? –

+1

Un seul auquel je peux penser est qu'il ne sortira pas tant que do_something() n'est pas terminé. Vous devriez donc aussi définir max_execution_time, juste au cas où. – Dmitri

+0

Très bien, merci pour vos commentaires –