Détercter un execution time out [Résolu]

Signaler
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
    Saluté,
j'ai un fichier php qui génère des vignettes à partir d'images ...
bon l'idée est qu'il ne génère une vignette que si elle n'existe pas ...
mais c'est assez long..du coup je dois le relancer plusiers fois à la main pour qu'il continue de traiter ce que n'a pas déjà été généré...
j'aimerai détecter l'execution time out pour reboucler automatiquement le fichier sur lui même tant que toutes les vignettes ne sont pas générées ...
savez vous si c'ets possible ?
thxx !
@+

4 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Salut,

Au moment du timeout, c'est déjà trop tard...
Tu peux connaitre le temps maximum d'execution avec :
$t = ini_get('max_execution_time');
qui retourne un entier correspondant au temps en secondes.

Tu peux changer cette valeur avec :
ini_set('max_execution_time', XX);
ou bien
set_time_limit(XX);

Cependant, on ne peut pas modifier le temps maximum d'exécution quand le serveur est configuré en SAFE MODE : cette configuration dépend des hébergeurs. Pour savoir si SAFE MODE est activé => phpinfo()

Comme tu ne peux pas réellement détecter le moment ou le timeout survient, tu peux essayer de bidouiller un peu.
Il te faut un compteur, que tu incrémentes à chaque vignette générée.
Il te faut aussi initialiser un compteur de temps au début du script
Si tu es en php5 :

$start_time = microtime(true);

Si tu es en php4 :

list($usec, $sec) = explode(" ", microtime());
$start_time = (float)$usec + (float)$sec;

Après avoir généré une vignette, tu vérifies si le temps restant avant le timeout (max_execution_time - start_time) est suffisant pour générer 2 vignettes. Si oui, tu continues ta boucle. Sinon, tu sors de la boucle (break) et tu recharges la page ( header('Location: /url') )
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
    yes c'est ce que j'ai fait !
... lol ah la bidouille ;) ;)
merci
@+
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
Hello,

ou ars tu utilises mon NO TIMEOUT PACKAGE
http://www.phpcs.com/codes/PHP5-NOTIMEOUT-PACKAGE_39866.aspx
qui se sert de javascript et d'ajax pour faire de gros traitements sans se heurter au max_execution_time de php, justement.
:-)
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
    Yep ! j'avais deja vu ta source du no time out package mais j'ai eu du mal à l'utiliser....
je sais pas si ajax est très adapté à mon pb là ... car c'est un script php qui va être appelé via une application en flash en fait ...
vuala koi :)
++ et merci