Rechercher : dans
Par :

[PHP] Pb sur un script pour retailler des img

Dernière réponse le 10 avr 2007 à 17:48:03 jimmyneutron, le 4 avr 2007 à 18:29:09 
 Signaler ce message aux modérateurs

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...

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « [PHP] Pb sur un script pour retailler des img » dans :
[Webmaster] Afficher facilement le code php/xhtml de vos pages VoirSi vous voulez proposer a vos visiteurs de voir la source de vos fichiers (PHP ou HTML), il y a plusieurs solutions. En php Afficher le code php Afficher le code html En html Informations Voir aussi En php Afficher le code php La...
[PHP] Comment afficher l'adresse IP d'un visiteur ? VoirPour afficher l'adresse IP d'un visiteur sur votre site, insérez ce code dans la zone où vous voulez qu'elle s'affiche.
Automatiser des tâches avec init et cron VoirSous Linux, il est facile d'automatiser des tâches, avec init pour lancer une tâche au démarrage, ou bien avec cron pour lancer une tâche à un moment précis. Il y a plusieurs logiciels gérant les crons, ici le logiciel crontab est...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...
Implantation du code Php VoirL'interprétation du code par le serveur Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises spéciales et...

1

jimmyneutron, le 4 avr 2007 à 19:19:54
  • +1

Up !!!

Répondre à jimmyneutron

2

jimmyneutron, le 5 avr 2007 à 09:24:33

Up !!!

Répondre à jimmyneutron

3

jimmyneutron, le 5 avr 2007 à 15:55:57

Up !!!

Répondre à jimmyneutron

4

jimmyneutron, le 6 avr 2007 à 13:48:14

Up...

Répondre à jimmyneutron

5

ThEBiShOp, le 6 avr 2007 à 17:47:16

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..

Répondre à ThEBiShOp

6

jimmyneutron, le 6 avr 2007 à 20:24:34

Difficile, Free (ma seule autre option pour le moment) a désactivé les fonctions 'ftp' ...

Répondre à jimmyneutron

7

ThEBiShOp, le 7 avr 2007 à 10:46:09

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.

Répondre à ThEBiShOp

8

jimmyneutron, le 7 avr 2007 à 21:05:27

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

Répondre à jimmyneutron

9

jimmyneutron, le 10 avr 2007 à 17:45:14

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 ...

++

Répondre à jimmyneutron

10

 jimmyneutron, le 10 avr 2007 à 17:48:03

_

Répondre à jimmyneutron