2010-12-07 12 views
2

Ich habe ein Skript, das durch ein Verzeichnis durchläuft und alle darin enthaltenen Bilder auf bestimmte Größen bearbeitet, wobei das Problem darin besteht, dass es 1.000 Bilder mit einer Gesamtgröße von bis zu 300 MB gibt.PHP-Speicherlimit Problem beim Bearbeiten mehrerer Dateien

Gibt es eine Möglichkeit, dieses erstellte Bild aus dem Speicher nach jeder Schleife zu entfernen, so dass es nicht php memory_limit zählt oder muss ich nur ein Speicherlimit von -1 festlegen?

foreach($image as $file){ 
    // obviousment this provides a valid image resource 
    $new_image = Common::resizeImg($file['tmp_name'], $file['ext'], 215, 121); 
    imagejpeg($new_image, SERVER_ROOT."/img/media/small-".$id.$file_ext, 100); 

    // clear/reset this memory??? 
} 
+0

Ich hoffe, dass Sie das von der Konsole ausführen? :) Wenn ja - versuchen Sie es in kleinere Aufgaben aufzuteilen. Aber natürlich können Sie das 'memory_limit' auf -1 setzen. Aber das kann gefährlich sein. – thedom

Antwort

4

können Sie versuchen, imagedestroy aufrufen, die jeden Speicher mit dem übergebenen in Bild Ressource zugeordnet aufräumt:

foreach($image as $file){ 
    // obviousment this provides a valid image resource 
    $new_image = Common::resizeImg($file['tmp_name'], $file['ext'], 215, 121); 
    imagejpeg($new_image, SERVER_ROOT."/img/media/small-".$id.$file_ext, 100); 

    imagedestroy($new_image); 
} 
+0

perfekt, ich werde das versuchen – kalpaitch

1

Stellen Sie sicher, imagedestroy, nachdem Sie auf die Platte geschrieben haben - sonst Sie fügen Sie jedes neue Bild in den Speicher ein.

0

Sie können die memory_limit in php.ini standardmäßig auf etwas über 16MB ändern.

In meinem Fall habe ich es in 64 oder 128, was genug ist. Außerdem könntest du den Speicher mit imagedestroy befreien. Zum Beispiel:

$ image = imagecreatetruecolor (100, 100); imagedestroy ($ image);

Auf diese Weise wird der verwendete Speicher freigegeben.

+0

Sie haben Recht, aber dieses Skript wird zwischen einer Reihe von verschiedenen Shared-Hosting-Providern übergeben, so dass ich nach einer einfacheren Lösung suchte. – kalpaitch

Verwandte Themen