|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 60 ![]() |
Bonjour,
voici ma boucle qui traite tous les fichiers du tableau $tab_online: Code :
Fatal error: Maximum execution time of 30 seconds exceeded in /home ... et une partie des photos n'est pas traitée. Si j'ajoute set_time_limit(300); pour repousser le timeout à 5 min, l'erreur ne s'affiche pas mais l'opération n'aboutie pas non plus... En isolant avec des 'echo' avant et après les fonctions, puis en chronométrant la vitesse d'éxécution des fonctions: il se trouve que l'application bloque au niveau de "imagecopyresampled" mais jamais sur la même image. Ce qui exclu le problème de la source. J'ai essayé de mettre un sleep(1); dans la boucle pour ralentir l'éxécution au càs où le problème viendrait du fait que l'appli s'emballerait. J'ai aussi essayé avec une "function" ... Rien à faire... Ce que je ne comprend pas c'est le timeout... avec une simple boucle for($i=0; $i<100; $i++) { sleep(1); // pause d'1sec à chaque itération } l'application doit donc durer 100 sec. Eh bien là, pas de Fatal error: Maximum execution time of 30 seconds exceeded in /home ... Pour info je suis sur un 90plan de chez OVH Merci pour les infos... |
||
|
|
00
|
|
|
#2 | |
|
Membre chevronné
![]() Inscription : mai 2005 Messages : 657 ![]() |
Salut,
Citation:
La fonction set_time_limit() et la directive de configuration max_execution_time n'affectent que le temps d'exécution du script lui-même. Tout temps passé en dehors du script, comme un appel système utilisant system(), des opérations sur les flux, les requêtes sur base de données, etc. n'est pas pris en compte lors du calcul de la durée maximale d'exécution du script. (cf. http://www.php.net/set_time_limit) Or sleep() n'est pas considéré comme du temps d'exécution je pense Pour ton script, une solution serait de diviser l'exécution entre plusieurs appels, puisque apparement ça passe bien avec une seule image. |
|
|
|
00
|
|
|
#3 | ||
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 60 ![]() |
Citation:
Citation:
1) avec sleep() je pensais que l'appli ne serait pas surchargé... et prendrait le temps... queneni ! 2) avec un appel à une fonction et une boucle avec un sleep() pour faire comme au dessus mais en plus léger... queneni ! je ne vois pas comment faire autrement ... si je bloque à 100 photos 800x600 ça marche... mais je ne vois pas comment passer les autres facilement, sans action de l'utilisateur... ce qui me gonfle c'est que le page s'arrête sans erreur (à condition d'avoir un set_time_limit(300); vu que imagecopyresampled reourne true ou false je me suis dit que je pourrais mettre: while(!imagecopyresampled($dst, $img, 0, 0, 0, 0, round($dst_width), round($dst_height), $width, $height)) { sleep(1); } ca ne fait rien de plus... et même : imagecopyresampled($dst, $img, 0, 0, 0, 0, round($dst_width), round($dst_height), $width, $height) or die ("Error"); ne retourne rien... on dirait que le serveur abandonne l'opération en cours de route... |
||
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 60 ![]() |
réponse de la hotline:
Bonjour, dans notre environnement cette variable n'a pas d'effet, nous avons des robots qui check en continu l'execution des scripts. (au sujet du set_time_limit(); ) donc solution découper le programme en plusieurs partie pour retailler de 50 images en 50 ou moins ... ++ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com