PHP GD Zulässige Speichergröße erschöpft
Ich versuche, ein Verzeichnis mit JPEG-Bildern (ca. 600+, zwischen 50.000 und 500.000) mit PHP: GD zu verarbeiten, um die Größe der Bilder zu ändern und sie zu speichern. Nach korrekter Verarbeitung von nur 3 Bildern (30K, 18K und 231K) erhalte ich einErlaubte Speichergröße von 16777216 Bytes erschöpft PHP Schwerwiegender Fehler.
Ich fahre durch die Bilder und rufe den folgenden Code auf:
list($w, $h) = getimagesize($src);
if ($w > $it->width) {
$newwidth = $it->width;
$newheight = round(($newwidth * $h) / $w);
} elseif ($w > $it->height) {
$newheight = $it->height;
$newwidth = round(($newheight * $w) / $h);
} else {
$newwidth = $w;
$newheight = $h;
}
// create resize image
$img = imagecreatetruecolor($newwidth, $newheight);
$org = imagecreatefromjpeg($src);
// Resize
imagecopyresized($img, $org, 0, 0, 0, 0, $newwidth, $newheight, $w, $h);
imagedestroy($org);
imagejpeg($img, $dest);
// Free up memory
imagedestroy($img);
Ich habe versucht, Speicher mit dem @ freizugebimagedestroy
Funktion, aber es scheint keine Auswirkungen zu haben. Das Skript verschluckt sich ständig amimagecreatefromjpeg
Codezeile.
Ich habe die php.ini und das @ überprümemory_limit = 16M
ie @ -Einstellung scheint korrekt zu sein. Aber ich kann nicht herausfinden, warum sich die Erinnerung füllt. Sollte es nicht sein, den Speicher an den Müllsammler zurückzugeben? Ich möchte die memory_limit-Einstellung nicht wirklich erhöhen. Dies scheint ein schlechter Workaround zu sein, der möglicherweise in Zukunft zu weiteren Problemen führen kann.
FYI: Ich führe mein Skript an einer Eingabeaufforderung aus. Es sollte die Funktionalität nicht beeinträchtigen, könnte aber Ihre Reaktion beeinflussen. Ich dachte, ich sollte es erwähnen.
Kann jemand sehen, ob ich nur etwas Einfaches vermisse oder ob es hier einen Designfehler gibt? Sie würden denken, dass dies eine ziemlich einfache Aufgabe wäre. Das muss doch möglich sein, oder?