thumbnailImage
来生成图像。然而,有时候我会收到以下信息:
我注意到整个过程在30秒之前就失败了。但是给出的错误仍然是执行时间已经超过了最大限制。"超过了30秒的最大执行时间"
这个问题更像下面链接中的问题。 http://xenforo.com/community/threads/fatal-error-maximum-execution-time-exceeded-when-uploading-avatars.17982/
能不能给一些建议?
thumbnailImage
来生成图像。然而,有时候我会收到以下信息:
我注意到整个过程在30秒之前就失败了。但是给出的错误仍然是执行时间已经超过了最大限制。"超过了30秒的最大执行时间"
apt-get build-dep imagemagick
identify -version
并查找“特性”。 - Mark Setchell当启用OpenMP时,ImageMagick可能会出现挂起问题,因此您可以尝试禁用OpenMP重新构建它 - 正如Greg所指示的那样。
要查看是否启用了OpenMP,请在终端提示处输入:
identify -version
在“功能”下查找OpenMP。
作为一种快速测试和可能的解决方法,您可以尝试禁用ImageMagick中的多线程,这样可以防止OpenMP做任何事情。
要实现这一点,在调用任何IM函数之前,将ImageMagick环境变量MAGICK_THREAD_LIMIT
设置为1即可。
putenv('MAGICK_THREAD_LIMIT=1');
Reference material: here.
convert -list resource
并查看 Thread
值。它会大于1。<policy domain="resource" name="thread" value="1"/>
通过convert -list resource
再次验证线程限制,应该为1。
现在重新启动您的PHP-FPM。例如:service php7.1-fpm restart
,现在您将看到PHP使用您设置的确切max_execution_time
。
如果您无法使用终端,也可以直接通过PHP设置线程限制。您也可以直接通过PHP设置线程限制:
Imagick::setResourceLimit(Imagick::RESOURCETYPE_THREAD, 1);
echo Imagick::getResourceLimit(Imagick::RESOURCETYPE_THREAD);
如果Imagick已经编译为ImageMagick版本6.7.8或更高版本,则可用此常量。
但是,由于我们现在使用的是单线程,因此ImageMagick的性能不如以前。因此,您可以增加policy.xml中的线程值,并将max_execution_time设置为:30 * number_of_threads
。
其他解决方案可能会更加困难,但可以实现与上述相同的结果。
我不是专家,但我会尽力。
检查内存限制,至少增加256MB。
您可以通过time => convert -limit time 1 in.jp2 out.jpg来限制各种资源。 请参考此链接=> http://www.imagemagick.org/script/command-line-options.php?ImageMagick=9jcfn0pu5vfu215d7r2df55ah1#limit
如果您正在处理大型图像,可以检查图像文件大小,如果太大就退出。此外,您可以进行一些特殊的大型图像处理以加快速度,以免出现卡顿。 请参考此链接=> http://www.imagemagick.org/Usage/files/#massive
set_time_limit(0);
<?php set_time_limit(0); ?>
。