Traitement d'image trop long pour l'hebergeur

Traitement d'image trop long pour l'hebergeur - PHP - Programmation

Marsh Posté le 11-11-2006 à 21:57:54    

Bonjour,
j'ai crée une fonction qui me permet de gérer ma galerie photo.
J'ai un dossier nommé 'FULL' qui contient mes images nommées 1.jpg, 2.jpg, ...
 
Le script crée 3 formats miniatures de ces photos (miniature, aperçu, zoom).
Tout fonctionne bien en local, bien que j'ai du rajouter un set_time_limit(0); afin de ne pas dépasser les 30s du time_limit de php.ini.
En local, donc, tout est ok.
 
Cependant, lorsque je test cette fonction sur mon hebergeur, tout commence bien, mais le script s'arrête vers la 8eme photo. :?  
 
Je pense qu'il doit y avoir un config de l'hebergeur qui évite la surcharge de son proc, mais bon...
Pour info, je suis chez 1and1
 
Quelles solutions pourriez-vous me proposer ?
 
 

Code :
  1. function creation($repertoire){
  2. // CREATION DES MINIATURES  
  3. $home = $repertoire."/home/";
  4. $mini = $repertoire."/mini/";
  5. $big = $repertoire."/big/";
  6. $full = $repertoire."/full/";
  7. $nb=count_files($full, ".jpg", 0);
  8. // On crée le dossier
  9. mkdir($home);
  10. mkdir($mini);
  11. mkdir($big);
  12. set_time_limit(0);
  13. $i=1;
  14. while($i<=$nb) {
  15.  $big_file = $full.$i.'.jpg';
  16.  $source = imagecreatefromjpeg($big_file); // La photo est la source
  17.  $largeur_source = imagesx($source);
  18.  $hauteur_source = imagesy($source);
  19.  if(($largeur_source)>($hauteur_source)){
  20.  if ($i<6) $destination = imagecreatetruecolor(250, 187); // On crée la miniature vide
  21.  $destination2 = imagecreatetruecolor(100, 75); // On crée la miniature vide
  22.  $destination3 = imagecreatetruecolor(640, 480); // On crée la miniature vide
  23.  }
  24.  else {
  25.  if ($i<6) $destination = imagecreatetruecolor(187,250); // On crée la miniature vide
  26.  $destination2 = imagecreatetruecolor(75,100); // On crée la miniature vide
  27.  $destination3 = imagecreatetruecolor(480,640); // On crée la miniature vide
  28.  }
  29.  // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image  
  30.  if ($i<6) $largeur_destination = imagesx($destination);
  31.  $largeur_destination2 = imagesx($destination2);
  32.  $largeur_destination3 = imagesx($destination3);
  33.  if ($i<6) $hauteur_destination = imagesy($destination);
  34.  $hauteur_destination2 = imagesy($destination2);
  35.  $hauteur_destination3 = imagesy($destination3);
  36.  // On crée la miniature
  37.  if ($i<6) imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
  38.  imagecopyresampled($destination2, $source, 0, 0, 0, 0, $largeur_destination2, $hauteur_destination2, $largeur_source, $hauteur_source);
  39.  imagecopyresampled($destination3, $source, 0, 0, 0, 0, $largeur_destination3, $hauteur_destination3, $largeur_source, $hauteur_source);
  40.  if ($i<6) $file_home = $home.$i.'.jpg';
  41.  $file_mini = $mini.$i.'.jpg';
  42.  $file_big = $big.$i.'.jpg';
  43.  // On enregistre la miniature"
  44.  if ($i<6) imagejpeg($destination, $file_home);
  45.  imagejpeg($destination2, $file_mini);
  46.  imagejpeg($destination3, $file_big);
  47.  echo '<img src='.$file_mini.' alt="ok" /> ';
  48.  $i++;
  49. }
  50. }

 
 
Merci d'avance pour vos réponses !

Reply

Marsh Posté le 11-11-2006 à 21:57:54   

Reply

Marsh Posté le 12-11-2006 à 02:50:46    

G trouvé la solution :
test de l'existence des fichiers pour ne pas refaire la meme chose  meta refresh pour recharger la page.
 
C est un peu long, mais C ok

Reply

Marsh Posté le 12-11-2006 à 12:41:14    

Un truc aussi, c'est de générer une miniature à partir de la miniature précendente : d'abord tu fais la 640 * 480, ensuite la 250 * 187 à partie de la 640, et enfin la 100 * 75 à partir de la 250. Ca allègera aussi pas aml en temps de calcul je pense bien :)

Reply

Marsh Posté le 13-11-2006 à 00:15:46    

ah !
Bien vu ca...
Je vais tester !

Reply

Marsh Posté le 13-11-2006 à 05:44:51    

C'est quoi l'intérêt du refresh? [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 13-11-2006 à 07:47:28    

la page qui execute le script s arrete au bout de 8/9 images.
A son rechargement apres le refresh, la fonction recommence sans retravailller sur les images faites, donc elle fait les 8 images suivantes.
A la fin de la fonction, quand on sort du while; il y a un meta refresh vers une utre page et le code ne s execute plus.
 
Voila!
je sais pas si c'est tres clair... ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed