次の 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
この時差の理由は何でしょうか?
ここでのスタックオーバーフローに関する同様の質問に対する 1 つの回答は、スレッド/シェルを開始する必要がある Web サーバーからオーバーヘッドが発生するというものでした。これが本当の理由でしょうか?スレッドは軽量で、開始/終了にまったく時間がかからないと思いました。
呼び出す前にexec
、imagemagick が使用するスレッドの数をexec('env MAGICK_THREAD_LIMIT=1');
. 設定した値に関係なく、PHP のランタイムはあまり変わりませんMAGICK_THREAD_LIMIT
。とにかく、コマンドライン実行のランタイムは問題ないので、このバージョンでは OpenMP にバグはないようです。
上記のコマンドの実行時間を改善する方法についての提案は大歓迎です。
ご助力ありがとうございます。