Bonjour,
voici ma boucle qui traite tous les fichiers du tableau $tab_online:
Si je la laisse comme ça, le serveur me retourne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 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); }
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...
Partager