php: time limit exceeded `Success' @ cache.c/GetImagePixelCache/2051---Imagemagick的php扩展问题

用Imagemagick的php扩展,进行图片压缩并上传到数据库,执行过程中(压缩n张图片以后)会出现“php: time limit exceeded `Success' @ cache.c/GetImagePixelCache/2051.”或者“php: time limit exceeded `Resource temporarily unavailable' @ cache.c/GetImagePixelCache/2051.”的报错。

查了很多资料,有说把time_limit设置成-1或者0的:ini_set('time_limit','-1')、set_time_limit(0)

也有说把max_execution_time设置成0的:ini_set('max_execution_time', '0')。

但是都不奏效。


后来查看imagemagick的php扩展设置,发现配置文件policy.xml在五月份被更改过一次(之前一直正常使用),初步判断是imagemagick插件配置的问题。这里说一句题外话,后来得知,之所以配置被更改,是因为五月份imagemagick爆出来一个高危漏洞(可以构造虚假图片进行远程代码执行),详见http://www.freebuf.com/vuls/103504.html

于是找到线上机器的imagemagick的php扩展配置文件,覆盖有问题的机器的配置文件,但问题仍然无法解决。

无奈之下,查看imagemagick官方的配置说明:http://www.imagemagick.org/script/resources.php。寻找与时间相关的配置,最后通过将MAGICK_TIME_LIMIT设置为-1可以解决问题(在执行php的脚本中,export MAGICK_TIME_LIMIT=-1,即不限制imagemagick的执行时间)

你可能感兴趣的:(图像压缩,PHP)