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]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
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