以下
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秒(用命令行工具时间测量).
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上的类似问题的一个答案是,开销来自Webserver必须启动一个线程/ shell.这可能是真的吗?我认为线程是轻量级的,不要花太多时间来启动/终止.
在调用exec之前,我设置imagemagick使用的线程数(因为这是/是OpenMP?Reference中的一个错误)到1(exec(‘env MAGICK_THREAD_LIMIT = 1’));不管我为MAGICK_THREAD_LIMIT设置什么值,PHP的运行时间都不会变化很大.无论如何,OpenMP在这个版本中似乎并不是一个bug,因为命令行执行的运行时间是可以的.
任何关于如何改进上述命令运行时的建议将不胜感激.
非常感谢您的帮助.