AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP] Memory-Leak oder woran liegt's?
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Memory-Leak oder woran liegt's?

Ein Thema von Matze · begonnen am 9. Sep 2007 · letzter Beitrag vom 9. Sep 2007
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

[PHP] Memory-Leak oder woran liegt's?

  Alt 9. Sep 2007, 08:45
Hallo zusammen,

ich habe vor einiger Zeit ein kleines PHP-Album gebastelt, doch tritt nun dieser Fehler auf, nachdem ich neue Bilder hinzugefügt habe:

Zitat:
Fatal error: Allowed memory size of 25165824 bytes exhausted (tried to allocate 9792 bytes) in /home/www/web6/html/main/functions/fcts_album.php on line 699
Die Funktion, in der der Fehler auftritt, ist diese:

Code:
function create_album_thumbnail($filename)
{
   $im_size = getimagesize($filename);
   $width = $im_size[0];
   $height = $im_size[1];
   $type = $im_size[2];

   unset($im_size);

   $im_thumb_height = 147;
   $im_thumb_small_height = 80;

   // thumbnail size
   if ($width > $height)
   {
      $im_thumb_width = round($width / $height * $im_thumb_height);
      $im_thumb_small_width = round($width / $height * $im_thumb_small_height);
   }
   else
   {
      $im_thumb_width = round($width / $height * $im_thumb_height);
      $im_thumb_small_width = round($width / $height * $im_thumb_small_height);
   }

   $im_thumb = imagecreatetruecolor($im_thumb_width, $im_thumb_height);
   $im_thumb_small = imagecreatetruecolor($im_thumb_small_width, $im_thumb_small_height);

   // set permissions
   //chmod(dirname($filename), 0777);

   switch ($type)
   {
      case 1:
         $im = imagecreatefromgif($filename);
         $im_small = imagecreatefromgif($filename);
         break;
      case 2:
         $im = imagecreatefromjpeg($filename);              // <== Zeile 699
         $im_small = imagecreatefromjpeg($filename);
         break;
      case 3:
         $im = imagecreatefrompng($filename);
         $im_small = imagecreatefrompng($filename);
         break;
      case 4:
         $im = imagecreatefromwbmp($filename);
         $im_small = imagecreatefromwbmp($filename);
         break;
   }

   imagecopyresampled($im_thumb, $im, 0, 0, 0, 0, $im_thumb_width, $im_thumb_height, $width, $height);
   imagecopyresampled($im_thumb_small, $im_small, 0, 0, 0, 0, $im_thumb_small_width, $im_thumb_small_height, $width, $height);

   ImageDestroy($im);
   ImageDestroy($im_small);

   // create thumbnail directory
   $dir = dirname($filename) . '/thumbnails/';
   $dir_small = dirname($filename) . '/thumbnails/small/';
   
   //umask(0);
   if (! file_exists($dir))
   {
      mkdir($dir, 0777);
   }

   if (! file_exists($dir_small))
   {
      mkdir($dir_small, 0777);
   }

   switch ($type)
   {
      case 1:
         imagegif($im_thumb, $dir . basename($filename));
         imagegif($im_thumb_small, $dir_small . basename($filename));
         break;
      case 2:
         imagejpeg($im_thumb, $dir . basename($filename), 75);
         imagejpeg($im_thumb_small, $dir_small . basename($filename), 75);
         break;
      case 3:
         imagepng($im_thumb, $dir . basename($filename));
         imagepng($im_thumb_small, $dir_small . basename($filename));
         break;
      case 4:
         imagewbmp($im_thumb, $dir . basename($filename));
         imagewbmp($im_thumb_small, $dir_small . basename($filename));
         break;
   }

   ImageDestroy($im_thumb);
   ImageDestroy($im_thumb_small);
}
Auch wenn ich zuerst das größere Thumbnail erstelle, das freigeben und danach das kleinere, tritt das gleiche Problem auf. Ich kann nirgendwo ein Memory-Leak entdecken.
Was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: [PHP] Memory-Leak oder woran liegt's?

  Alt 9. Sep 2007, 08:56
Hallo,

ich habe im Internet diesen Beitrag in einem anderen Forum gefunden.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [PHP] Memory-Leak oder woran liegt's?

  Alt 9. Sep 2007, 08:58
Hallo Rolf,

danke, doch habe ich leider keine Adminrechte auf dem Server. Und da das Originalbild rund 130 KB klein ist, kann es eigentlich nicht daran liegen. Bei den meisten Bildern funktioniert es auch.

Edit: Hm das ist sogar das größte Bild mit rund 400KB, aber dass es da schon zu einem Fehler kommt, kann ich mir nicht ganz vorstellen.
Edit 2: Hm irgendwie sind's doch keine 400KB, aber das Bild ist ja kaputt (s. Anhang), vielleicht liegt's daran.
Edit 3: Hm das Bild ist eigentlich auch viel zu groß, ich lad's mal verkleinert hoch.
Miniaturansicht angehängter Grafiken
pict2227_186.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: [PHP] Memory-Leak oder woran liegt's?

  Alt 9. Sep 2007, 09:03
Hallo Matze,

wenn Du in hier über [google]Fatal error: Allowed memory size[/google] schaust, wird immer wieder auf die php.ini oder die .htaccess verwiesen, da der zugewiesene Speicher für PHP nicht ausreicht.

Edit: Wenn es vielleicht kaputt ist, dann kann es beim Bearbeiten des Bildes schon mal dazu kommen, dass die Speichernutzung ins unermässliche steigt. Ich sehe allerdings bei Deinem Bild nur den oberen Bereich.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [PHP] Memory-Leak oder woran liegt's?

  Alt 9. Sep 2007, 09:07
Hallo,

mit dem verkleinerten Bild geht alles problemlos (Anhang). Vielleicht überschreitet das bei hohen Auflösungen leicht den zulässigen Speicherverbrauch.

Danke, dann liegt's wohl nicht an der Funktion selbst. Das Problem wäre somit erledigt, da ich normalerweise nur kleinere Bilder hochlade.

Grüße

PS: In Windows sehe ich den unteren Bereich grau, wie als ob das Bild beschädigt war, im Browser sieht man nur den oberen Teil.
Miniaturansicht angehängter Grafiken
pict2227_991.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: [PHP] Memory-Leak oder woran liegt's?

  Alt 9. Sep 2007, 09:09
So sehe ich jetzt das ganze Bild.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [PHP] Memory-Leak oder woran liegt's?

  Alt 9. Sep 2007, 09:13
Jupp, ich habe das Originalbild verkleinert und dieses hochgeladen. Vielleicht ging beim Verkleinern kürzlich etwas schief, sodass das Bild beschädigt wurde oder der FTP-Upload war nicht ganz erfolgreich.
Und ich suche den Fehler in der Funktion.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz