problème de Fatal error: Allowed memory size of 33554432 bytes exhaust

problème de Fatal error: Allowed memory size of 33554432 bytes exhaust - PHP - Programmation

Marsh Posté le 24-07-2007 à 20:19:46    

Hello, avant de me jetter par la fenêtre, je tente quand meme un petit message ici !
 
mon probluème : j'ai devellopé une gallerie photo en php qui répond à mes besoin de photographe pressé :
il y a qu'un seul fichier index.php
il liste les photos qui sont dans le meme répertoire que lui
il en fait des vignettes et il les affiche (avec d'autres options...)
 
Je propose ce srcipt aux gens pour qu'ils puissent faire des galleries facillement sans rien coprendre au web...
(je suis entrain de faire le site web avec les explications d'utilisations)
 
juste que la, tout va bien, je suis content, je l'utilise tous le temps, je fais du travail de boeuf avec : 2 Go de photos, 600 photos de 10 millions de pixels... c'est long a calculer, mais ca mange tout, parfait !
 
Je précise que mon hébergeur perso est ... Free.fr
 
depuis quelques jours, j'éssaie de mettre ce script sur un autre espace free...  mais ca ne marche pas !  
je copie le meme script et les memes photos sur un autre free et ca me met ce message :
 
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 3872 bytes) in /mnt/160/sda/2/8/pixmariage/test/index.php on line 224
 
meme avec une seulle photo de 2 Mo en jpg, ca chie ! alors que sur mon free perso, je bourrine n'importe quoi et ca marche !!
 
Avez vous une idée de la raison pour laquelle ca marche chez moi et pas ailleur ???
 
exemple qui chie : http://pixmariage.free.fr/test/  (ya qu'une photo dans le dossier)
exemple qui marche : http://dolanhanh.free.fr/mariageDF/
 
je poste un bout du script ou je redimentionne les images  
 

Code :
  1. while ($currfile = readdir($handle)) 
  2. {
  3. // We get the extension of the current file and keep only image files
  4.    $extension= strtolower(substr( strrchr( $currfile,  "." ), 1 )); 
  5.    if ($extension== "gif" || $extension== "jpg" || $extension== "jpeg" || $extension== "png" || $extension== "JPG" || $extension== "JPEG" )
  6.    {
  7.       $nbfiles++;
  8.       $currfile = trim($currfile);
  9.       $filestab[$nbfiles] = $currfile;
  10. }
  11. }
  12. // si on veux trier par ordre alphabétique
  13. if($trieOrdreAlpha){sort($filestab) or die ("erreur" );}
  14. // on boucle sur les fichiers
  15. for ( $nb=1 ; $nb<=$nbfiles ; $nb++ ){
  16.    $currfile = $filestab[$nb];
  17.       if ($ishome ==  "" )
  18.       {
  19.          $size = GetImageSize($currfile);
  20.          $widthBig = $size[0];
  21.          $heightBig = $size[1];
  22.                
  23.          $rat = $widthBig/$heightBig;
  24.          // si c'est plus large que long
  25.          if($widthBig >= $heightBig){
  26.   //vignette
  27.         $width = $plusGrandCote;
  28.   $height = $plusGrandCote/$rat;
  29.   // moyennes
  30.   if($widthBig<$moy_plusGrandCoteW){
  31.    $moy_width = $widthBig;
  32.    $moy_height = $heightBig;
  33.         }
  34.        else{
  35.    $moy_width = $moy_plusGrandCoteW;
  36.    $moy_height = $moy_plusGrandCoteW/$rat;    
  37.        }
  38.   }
  39.          // si c'est plus long que large
  40.          else{
  41.          //vignettes
  42.   $height = $plusGrandCote;
  43.   $width = $plusGrandCote*$rat;
  44.   //moyennes
  45.   if($heightBig<$moy_plusGrandCoteH){
  46.    $moy_width = $widthBig;
  47.    $moy_height = $heightBig;
  48.         }
  49.        else{
  50.        $moy_height = $moy_plusGrandCoteH;
  51.    $moy_width = $moy_plusGrandCoteH*$rat;
  52.        }
  53.          }
  54.        
  55.         $format = $size[2]; //1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, 6 = BMP
  56.         $currthumbfile = "./" . $thumb_dir . "/" . $thumb_prefix . $currfile;
  57.         $currmoyfile = "./" . $moy_dir . "/" . $moy_prefix . $currfile;
  58.        
  59.        
  60.         if (! file_exists($currthumbfile))
  61.         {        
  62.            if ($format == 2) //JPG
  63.           {
  64.             // Redimensionnement petite
  65.             $image_p = imagecreatetruecolor($width, $height);
  66.             $image = imagecreatefromjpeg($currfile);
  67.             imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $widthBig, $heightBig);
  68.              
  69.   // Redimensionnement grande
  70.             $image_g = imagecreatetruecolor($moy_width, $moy_height);
  71.             $image2 = imagecreatefromjpeg($currfile);
  72.             imagecopyresampled($image_g, $image2, 0, 0, 0, 0, $moy_width, $moy_height, $widthBig, $heightBig);             
  73.  
  74.                }         
  75.            else if ($format == 3) //PNG
  76.            {
  77.         // Redimensionnement --> on fais une imagette en jpg
  78.             $image_p = imagecreatetruecolor($width, $height);
  79.             $image = imagecreatefrompng($currfile);
  80.             imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $widthBig, $heightBig);
  81.            
  82.             // Redimensionnement grande
  83.             $image_g = imagecreatetruecolor($moy_width, $moy_height);
  84.             $image2 = imagecreatefrompng($currfile);
  85.             imagecopyresampled($image_g, $image2, 0, 0, 0, 0, $moy_width, $moy_height, $widthBig, $heightBig);
  86.             }
  87.             else if ($format == 1) //GIF
  88.            {
  89.         // Redimensionnement --> on fais une grosse image en jpg
  90.             $image_p = imagecreatetruecolor($width, $height);
  91.             $image = imagecreatefromgif($currfile);
  92.             imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $widthBig, $heightBig);
  93.            
  94.             // Redimensionnement grande
  95.             $image_g = imagecreatetruecolor($moy_width, $moy_height);
  96.             $image2 = imagecreatefromgif($currfile);
  97.             imagecopyresampled($image_g, $image2, 0, 0, 0, 0, $moy_width, $moy_height, $widthBig, $heightBig);
  98.             }     
  99.              
  100.              
  101.                                  
  102.            if (!$image)
  103.            {
  104.                $currthumbfile = $currfile;
  105.            }
  106.            else
  107.            { 
  108.            // imagejpeg($image_p, $currthumbfile, $quality);
  109.             ImageDestroy($image);
  110.             ImageDestroy($image_p);
  111.            }
  112.   if (!$image2)
  113.            {
  114.                $currmoyfile = $currfile;
  115.            }
  116.            else
  117.            { 
  118.  // imagejpeg($image_g, $currmoyfile, $moy_quality);
  119.             ImageDestroy($image2);
  120.             ImageDestroy($image_g);
  121.            }
  122.         }


 
 
merci d'avance !


Message édité par alpseb le 24-07-2007 à 20:20:56
Reply

Marsh Posté le 24-07-2007 à 20:19:46   

Reply

Marsh Posté le 25-07-2007 à 16:05:26    

up

Reply

Marsh Posté le 25-07-2007 à 16:07:38    

Peut-être en libérant certaines images plus tôt ? Genre dès la redimension, un imagedestroy, surtout pas à la fin de la boucle.
 
Maintenant va toujours y avoir des images qui boufferont trop de mémoire...

Reply

Marsh Posté le 25-07-2007 à 16:08:30    

bah ça bouffe trop de RAM pour le paramétrage PHP de ton hébergeur. T'y peux rien.

Reply

Marsh Posté le 25-07-2007 à 18:15:34    

sur mon free perso ca marche nikel avec 600 images
sur le free d'une amie, ca marche pas avec une seulle image...
les 2 serveurs sont parrmetrés à l'identique...

Reply

Marsh Posté le 27-07-2007 à 18:17:22    

:'(

Reply

Marsh Posté le 27-07-2007 à 18:19:43    

alpseb a écrit :

les 2 serveurs sont parrmetrés à l'identique...


ah ouais ? comment tu le sais ?

Reply

Marsh Posté le 28-07-2007 à 23:08:37    

Bonsoir,
tu peux éventuellement essayer d'augmenter la mémoire allouée:
ini_set ( "memory_limit", "80M" ); en tout début de script.
Il faut voir si free l'autorise.
 
JeanLuc

Reply

Marsh Posté le 29-07-2007 à 00:20:21    

alpseb a écrit :

les 2 serveurs sont parrmetrés à l'identique...


C'est pas forcément vrai. free offre une option pour avoir plus d'espace mais faut l'avoir demandé. Ptet que ton amie l'a pas demandé !!!


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 30-07-2007 à 19:06:09    

si si elle l'a demandé... et ici, c'est la ram qui manque pas l'espace disque... quand je regarde le phpinfo, la config est la meme

Reply

Marsh Posté le 30-07-2007 à 19:06:09   

Reply

Marsh Posté le 31-07-2007 à 21:14:53    

peut être que simplement ton site est sur un serveur qui fait rien où t'es le seul à lui tirer sur la gueule. Et que ton amie est sur un serveur avec quelques sites qui pompent en ressources (genre ce que tu fais si y'en a 3  en même temps ça tombe :D )
 
Peut être simplement que la config matos est différente ou apache et que ça déconne.
 
Vas faire un tour sur les NG de free pour saisir le mec qui gère ça il te diras surement plus facilement que quiconque ;=)

Reply

Marsh Posté le 11-03-2010 à 12:27:23    

Sve@r a écrit :


C'est pas forcément vrai. free offre une option pour avoir plus d'espace mais faut l'avoir demandé. Ptet que ton amie l'a pas demandé !!!


 
Hello,
As-tu des infos sur cette option chez Free pour avoir plus de mémoire allouée ?
Je n'ai pas bcp cherché mais je ne trouve pas dans la config free.
Merci, d'avance
@+

Reply

Sujets relatifs:

Leave a Replay

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