Bonjour,
voici ma boucle qui traite tous les fichiers du tableau $tab_online:
Code PHP:
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...