5

exec()関数が非常に遅く、PHP のさまざまなマシンで時間が予測できない理由を誰か教えてもらえますか?

基本的に、私はいくつかの実行可能ファイルを持っていて、それを PHP で実行したいと考えています:

$command = '/usr/pathToComman/myCommand -someParameters';
exec($command);

問題は、シェルからの同じコマンドよりもはるかに長く実行されることです(つまり、3〜4倍、場合によっては25倍長くなります)。

これに加えて、コマンドはサーバー上の PHP からより長く実行されます。これはより強力です (より多くの RAM とより多くの GHz)。

したがって、2 つの質問があります。

  • なぜ?
  • これをどうすればいいですか?

PS PHPでは同じことができないので、これを実行する必要があります

PS2 @prodigitalson の質問への回答: 微分方程式を解きますが、基本的に何をしても速度が遅くなります。この方法で画像処理を行ったのを覚えていますが、速度もかなり遅くなりました。

4

1 に答える 1

1

これが遅くなる問題は、おそらく、PHP サーバーがコマンドを実行するためにシェルにアクセスする必要があるためです。そのため、PHP サーバーが行うことは、新しいシェルを作成し、新しいシェルでコマンドを呼び出すことです。新しいシェルを作成するということは、ほとんどのシステムで新しいスレッドを作成することを意味します。したがって、これらすべてが合わさると、実行時間が長くなります。

cgi スクリプトがこれらの問題を解決できる場合もありますが、ここで役立つかどうかはわかりません (シェルで何をしようとしているのかよくわからないため)。

于 2012-11-26T15:33:58.903 に答える