PHP exec() performance
以下 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。这真的是原因吗?我认为线程是轻量级的,并且不需要很长时间来启动/终止。
在调用之前,我将 imagemagick 使用的线程数(因为这是 OpenMP 中的一个错误?,参考)设置为 1,使用 .PHP的运行时不会有太大变化,无论我为设置什么值。无论如何,在这个版本中,OpenMP中似乎没有错误,因为命令行执行的运行时是可以的。exec
exec('env MAGICK_THREAD_LIMIT=1');
MAGICK_THREAD_LIMIT
任何关于如何改进上述命令的运行时的建议将不胜感激。
非常感谢您的帮助。