我有一個PHP腳本,用於在用戶的FTP文件夾中調整圖像大小以便在其網站上使用。Image magick/PHP正在摔倒大圖像
雖然調整速度緩慢,但腳本已正確完成過去的所有圖像。然而,最近,用戶上傳了一張21萬像素JPEG圖像的相冊,並且我發現,該腳本無法轉換圖像,但沒有發出任何PHP錯誤。當我查閱各種日誌時,我發現多個Apache進程因內存不足錯誤而中斷。
PHP腳本的功能部分基本上是一個for循環,迭代通過我的盤上的圖像,並調用該檢查,如果縮略圖存在的方法,然後執行下列操作:
$image = new Imagick();
$image->readImage($target);
$image->thumbnailImage(1000, 0);
$image->writeImage(realpath($basedir)."/".rescale."/".$filename);
$image->clear();
$image->destroy();
服務器具有512MB的RAM,通常至少360MB +免費。
PHP有它的內存限制,目前96MB設置,但我以前更高了設置沒有在這個問題上有任何影響。
據我估計,一個21萬像素的圖像在未壓縮時應該佔用80MB +的區域,所以我很困惑,爲什麼RAM消失得這麼快,除非Image Magick對象沒有從內存中移除。
有沒有什麼方法可以優化我的腳本,以便更有效地使用更少的內存或垃圾回收?
難道我只是沒有內存來應付這麼大的圖像嗎?
乾杯
儘量只使用「轉換」命令行工具,它應該更快和韓元不計入PHP的內存限制。 – robbrit 2010-12-06 14:11:48