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的执行时间)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值