Pb bizarre sur un script qui marche sans pb sur une dizaine de fichiers

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb bizarre sur un script qui marche sans pb sur une dizaine de fichiers

par Calimero » 13 oct. 2008, 01:16

Tu peux regarder du côté des réglages de PHP sur le serveur où le problème apparaît, en particulier :

- la limite de mémoire maximum allouée par un script ( http://fr2.php.net/manual/fr/ini.core.p ... mory-limit ).

- la limite de temps maximum pendant lequel le script peut tourner ( http://fr2.php.net/manual/fr/info.confi ... ution-time ).

Ca vaut le coup de regarder les deux dans tous les cas (si tu butes sur l'une maintenant, tu buteras probablement sur l'autre aussi).

Si la modification de la configuration de php sur l'hébergement n'est pas envisageable, il faudra modifier ton script (Dans le cas de la limite de temps ce sera facile : voir set_time_limit() ).

Pb bizarre sur un script qui marche sans pb sur une dizaine

par casio » 13 oct. 2008, 01:07

Salutations,

Sur un site que je viens de finir, et hébergé chez 1and1, j'ai créé un script de redimensionnement d'images. Celui-ci marchait à merveille sur un panel de 5/6 images, pour tester, mais maintenant que le site est online, ce script est devenu la pierre centrale, et devrait pourvoir traiter plus de 70 photos...

Or, celui-ci s'arrête à peine une dizaine d'images passées... Sans crier gare... sans message d'erreur...
J'ai pourtant activé le verbose error dans un fichier php.ini placé à la racine du script...

J'en suis la, et pas plus de verbose... Le script s'arrête purement et simplement au bout d'une dizaine d'images, sans aller jusqu'à la fin du while... (il n'affiche pas le code hors while)

Code : Tout sélectionner

<? Echo 'Generateur de thumbnails v.1.9.3.<br><br><br>'; // Memoire tampon PHP set_time_limit(500); // Chemin de départ $dir_base = "../photos/"; // Ouverture du dossier $opendir = opendir($dir_base); // Chemin de destination $dir_dst = "../photos/thumbs/"; // Qualite de l'image finale $qual = "100"; while ($f = readdir($opendir)) { // si le fichier existe if(is_file($dir_base.$f)) { // ------------------------------------ $ExtfichierOK = '" jpg JPG jpeg JPEG png PNG gif GIF"'; // (l espace avant jpg est important) // extension du fichier $xplode = explode('.',$f); $extension = $xplode[sizeof($xplode)-1]; // dernier element $extension = strtolower($extension); // on met en minuscule echo 'Extension du fichier : '.$extension.'<br>'; // ------------------------------------ // si l extension correspond, on continue if (strpos($ExtfichierOK,$extension) != '') { // ------------------------------------ // creation de la ressource-image de l image source switch ($extension) { case "jpg": case "JPG": case "jpeg": case "JPEG": $img_src = imagecreatefromjpeg($dir_base.$f); break; case "png": case "PNG": $img_src = imagecreatefrompng($dir_base.$f); break; case "gif": case "GIF": $img_src = imagecreatefromgif($dir_base.$f); break; // On peut également ouvrir les formats wbmp, xbm et xpm // (vérifier la configuration du serveur) } // fin switch // ------------------------------------ // dimensions de l image source // Exemple avec imagesx() et imagesy() $img_src_width = imagesx( $img_src ); $img_src_height = imagesy( $img_src ); echo 'Largeur originale : '.$img_src_width.' px<br>'; echo 'Hauteur originale : '.$img_src_height.' px<br>'; // ------------------------------------ // on veut une image de destination // de 640 pixels de large sur 480 de haut MAXI $img_src_width_max = 640; $img_src_height_max = 480; echo 'Largeur max. souhaitee : '.$img_src_width_max.' px<br>'; echo 'Hauteur max. souhaitee : '.$img_src_height_max.' px<br>'; // Nom du fichier de destination $img_dst_name = 'thb-'.$f; // $img_dst_name = 'thb-'.strtolower($f); echo 'Travail de l image : <a href="'.$dir_base.$f.'" target="_blank">'.$dir_base.$f.'</a><br>'; echo 'Nom du fichier a creer : '.$img_dst_name.'<br>'; // ------------------------------------ // calcul de la taille de l image de destination $ratiox = $img_src_width / $img_src_width_max; // ratio en largeur $ratioy = $img_src_height / $img_src_height_max; // ratio en hauteur $ratio = max($ratiox,$ratioy); // le plus grand echo 'Ratio largeur : '.$ratiox.'<br>'; echo 'Ratio hauteur : '.$ratioy.'<br>'; echo 'Ratio selectionne : '.$ratio.'<br>'; // dimensions de l image dest $img_dst_width = $img_src_width/$ratio; $img_dst_height = $img_src_height/$ratio; echo 'Nouvelle largeur : '.$img_dst_width.' px<br>'; echo 'Nouvelle hauteur : '.$img_dst_height.' px<br>'; // ------------------------------------ // si l image source est plus grande : on redimensionne if ($img_src_width>$img_dst_width || $img_src_height>$img_dst_height) { echo 'Qualite de la nouvelle image : '.$qual.'%<br>'; // Creation d une ressource-image de l image de destination // (noire par defaut) $img_dst_resource = imagecreatetruecolor($img_dst_width, $img_dst_height); // ------------------------------------ // REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne) ImageCopyResampled($img_dst_resource, $img_src, 0, 0, 0, 0, $img_dst_width, $img_dst_height, $img_src_width, $img_src_height); // ------------------------------------ // ENREGISTREMENT (en fonction de l extension) avec qualite a xxx% switch ($extension) { case 'jpg': case 'JPG': case 'jpeg': case 'JPEG': imagejpeg ($img_dst_resource, $dir_dst.$img_dst_name, $qual); echo 'Suppression des valeurs tampons...&nbsp;( - '.$f.' - et - '.$img_dst_name.' - )'; imagedestroy ($img_src); imagedestroy ($img_dst_resource); echo '&nbsp;<img src="../check.png" /><br>'; // Affichage de confirmation d'écriture echo 'Nouvelle image : <a href="'.$dir_dst.$img_dst_name.'" target="_blank">'.$dir_dst.$img_dst_name.'</a>...&nbsp;<img src="../check.png" /><br /><br />'; break; case 'png': case 'PNG': imagepng ($img_dst_resource, $dir_dst.$img_dst_name, $qual); echo 'Suppression des valeurs tampons...&nbsp;( - '.$f.' - et - '.$img_dst_name.' - )'; imagedestroy ($img_src); imagedestroy ($img_dst_resource); echo '&nbsp;<img src="../check.png" />'; // Affichage de confirmation d'écriture echo 'Nouvelle image : <a href="'.$dir_dst.$img_dst_name.'" target="_blank">'.$dir_dst.$img_dst_name.'</a>...&nbsp;<img src="../check.png" /><br /><br />'; break; case 'gif': case 'GIF': imagegif ($img_dst_resource, $dir_dst.$img_dst_name, $qual); echo 'Suppression des valeurs tampons...&nbsp;( - '.$f.' - et - '.$img_dst_name.' - )'; imagedestroy ($img_src); imagedestroy ($img_dst_resource); echo '&nbsp;<img src="../check.png" />'; // Affichage de confirmation d'écriture echo 'Nouvelle image : <a href="'.$dir_dst.$img_dst_name.'" target="_blank">'.$dir_dst.$img_dst_name.'</a>...&nbsp;<img src="../check.png" /><br /><br />'; break; } // fin switch } // fin si l image source est plus grande } // fin si l extension correspond else echo 'Extension non reconnue... Fichier suivant...<br><br>'; // fin si l extension ne correspond pas } // fin si le fichier existe } // fin while closedir($opendir); // Fermeture du dossier echo '<br>Vos thumbnails sont disponibles dans le dossier '.$dir_dst.'<br>Merci de m avoir utilise... ;-)<br><br>'; ?>
Any idea ? Ca me bloque dans la sortie du site... :(