[PHP] Pb sur un script pour retailler des img

Résolu/Fermé
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 - 4 avril 2007 à 18:29
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 - 10 avril 2007 à 17:48
Bonjour,

voici ma boucle qui traite tous les fichiers du tableau $tab_online:

for($i=0; $i<count($tab_online); $i++)
{

$src = "http://mon.site.com/".str_replace(" ", "%20", $tab_online[$i]);

if (substr($src, -3) == "jpg")
{

$img = imagecreatefromjpeg($src);
$size = getimagesize($src);
						
$max_width = 800;
$max_height = 600;

$width = $size[0];
$height = $size[1];

if ( $width > $height )
{

$dst_height = $height * $max_width / $width;
$dst_width = $max_width;

}
else
{

$dst_width = $width * $max_height / $height;
$dst_height = $max_height;
}
		
$dst = imagecreatetruecolor(round($dst_width), round($dst_height));
$dst_thumbs = imagecreatetruecolor(round($dst_width * 25 / 100), round($dst_height * 25 / 100));

imagecopyresampled($dst, $img, 0, 0, 0, 0, round($dst_width), round($dst_height), $width, $height);

imagecopyresampled($dst_thumbs, $img, 0, 0, 0, 0, round($dst_width * 25 / 100), round($dst_height * 25 / 100), $width, $height);

imagejpeg($dst, "../../photos/".$new_dir."/".$i.".jpg");
imagejpeg($dst_thumbs, "../../photos/".$new_dir."/thumbs/".$i.".jpg");

imagedestroy($img);
imagedestroy($dst);
imagedestroy($dst_thumbs);


Si je la laisse comme ça, le serveur me retourne:
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...

A voir également:

10 réponses

jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
4 avril 2007 à 19:19
up !!!
1
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
5 avril 2007 à 09:24
up !!!
0
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
5 avril 2007 à 15:55
up !!!
0
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
6 avril 2007 à 13:48
up...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
6 avril 2007 à 17:47
si tu peux, essaye le même script sur un autre hébergeur, je sais que des fois sur certaines offres d'ovh il y a des soucis de temps d'exécution..
0
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
6 avril 2007 à 20:24
Difficile, Free (ma seule autre option pour le moment) a désactivé les fonctions 'ftp' ...
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
7 avril 2007 à 10:46
les fonctions de traitement d'image sont présentes sur free (enfin certaines puisque j'en utilise).

Sinon essaye tout simplement avec easyphp, ça fera déja un point de comparaison.
0
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
7 avril 2007 à 21:05
les fonctions gd sont peut-être sur free mais pas la gestion ftp
j'avais pas pensé à easyphp je vais voir...
la hotline d'ovh vient de me répondre... je vais voir ça ...

merci
0
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
10 avril 2007 à 17:45
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 ...

++
0
jimmyneutron Messages postés 35 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 septembre 2011 5
10 avril 2007 à 17:48
_
0