以下 PHP 代码确实返回了大约 3.5 秒的运行时间(多次测量并取平均值):
$starttime = microtime(true);
exec('/usr/local/bin/convert 1.pdf -density 200 -quality 85% 1.jpg');
$endtime = microtime(true);
$time_taken = $endtime-$starttime;
当我在 ssh 终端上运行相同的命令时,运行时间减少到大约 0.6 秒(使用命令行工具测量time
)。
imagemagick 库的版本是
Version: ImageMagick 6.7.0-10 2012-12-18 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP
这个时差的原因可能是什么?
stackoverflow 上类似问题的一个答案是开销来自 Web 服务器必须启动线程/shell。这真的是原因吗?我认为线程是轻量级的,启动/终止不需要很长时间。
在调用之前,exec
我将 imagemagick 使用的线程数(因为这是/是 OpenMP 中的一个错误?,参考)设置为 1 和exec('env MAGICK_THREAD_LIMIT=1');
. 无论我设置什么值,PHP 的运行时都没有太大变化MAGICK_THREAD_LIMIT
。无论如何,在这个版本中似乎没有 OpenMP 的错误,因为命令行执行的运行时是好的。
任何关于我如何改进上述命令的运行时间的建议都将不胜感激。
非常感谢您的帮助。