$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
之前,我使用exec('env MAGICK_THREAD_LIMIT=1');
将imagemagick使用的线程数设置为1(因为这是OpenMP中的一个错误?参考)。无论我为MAGICK_THREAD_LIMIT
设置什么值,PHP运行时都没有太大变化。无论如何,似乎在这个版本中OpenMP没有错误,因为命令行执行的运行时间是可以的。
是否有任何建议可以改进上述命令的运行时间,将不胜感激。
非常感谢您的帮助。