我有一个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