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

cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 13 nov. 2007 à 14:33 - Dernière réponse : cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention
- 14 nov. 2007 à 15:00
    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 !
@+
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 13 nov. 2007 à 15:12
3
Merci
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') )

Merci neigedhiver 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de neigedhiver
cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 13 nov. 2007 à 15:57
0
Merci
    yes c'est ce que j'ai fait !
... lol ah la bidouille ;) ;)
merci
@+
Commenter la réponse de cs_caviar
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 13 nov. 2007 à 19:53
0
Merci
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.
:-)
Commenter la réponse de malalam
cs_caviar 329 Messages postés samedi 4 janvier 2003Date d'inscription 29 mars 2015 Dernière intervention - 14 nov. 2007 à 15:00
0
Merci
    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
Commenter la réponse de cs_caviar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.