我試圖找出足夠的數字來調整某些大小的圖像時調整ini_set('memory_limit', '*M')
。我在測試時不明白的是,有時候我得到Fatal error
(顯然分配的內存不夠),但是如果我刷新腳本幾次,它最終設法調整圖像大小。爲什麼PHP內存耗盡錯誤在圖像調整大小上不一致?
爲什麼調整特定圖像的內存要求不一致?爲什麼最終成功,如果我在瀏覽器中刷新php腳本(1次或更多次)?就好像PHP部分調整圖像的大小,並緩存結果,準備在下次執行時繼續執行。
如果我分配一個足夠高的值,它始終在第一次執行(明顯)上工作。但是,在分配較小的值時,它仍然有效,但值越低,我需要在瀏覽器中刷新腳本的次數越多,以避免出現錯誤。
實施例代碼
ini_set('memory_limit', '64M');
$image = 'image.jpg';
$image_size = getimagesize($image);
$resize_height = round($image_size[1] * 1920/$image_size[0]);
$image_create = imagecreatefromjpeg($image);
$image_resized = imagecreatetruecolor(1920, $resize_height);
imagecopyresampled($image_resized, $image_create, 0, 0, 0, 0, 1920, $resize_height, $image_size[0], $image_size[1]);
imagejpeg($image_resized, 'image_COPY.jpg', 95);
imagedestroy($image_create);
imagedestroy($image_resized);
例錯誤
Fatal error: Allowed memory size of 10485760 bytes exhausted (tried to allocate 28672 bytes) in */test.php on line 12
我可以很容易地通過分配的存儲器中的豐富量避免錯誤,但它是很難找到的閾值,和我很想知道它爲什麼這樣工作。提前感謝任何指針。
這是否發生在128M的默認memory_limit?也許你可以在調整大小之前獲得圖像大小,並「即時」計算出適當的內存限制? – BenRoob