5

PHP exec() のパフォーマンスから、exec() を実行するとオーバーヘッドが発生することがわかりますが、大規模なプログラムや Web サイトでは、バックエンドの一部を別の言語で記述し、PHP に exec を使用してプログラムを呼び出させることは有益ではないでしょうか?

たとえば、大量の文字列操作を伴うテストを作成/実行しました。PHP は 2.3 秒、Java は .52 秒、C++ は .33 秒かかりました。速度の違いはすでに明らかです。操作をマルチスレッド化すると、さらに時間が短縮される可能性があります。また、次のようなもので並列処理を実現できることもわかりました

exec("./largeoperation > mydir/$dirname.data &"); 
//or
exec('java Backend > /dev/null 2>&1 &');

コードを別の言語で書く必要があること以外に、これらすべての利点があるにもかかわらず、バックエンドのより多くの部分を別の言語で書かれたより高速なプログラムに委ねるべきではない理由がわかりません。また、 Working with Php-Java Bridge のようなブリッジの存在は知っていますが、それを使用すると単純な exec() よりもはるかに高速になるかどうかはわかりません。exec() の詳細を知っている人はいますか?

4

1 に答える 1

4

や友達を使って他のプログラムにワークアウトすることもできますがexec、あなたがやろうとしていることは、メッセージ キューシステムを使って行うのが一番です。適切に設計されたメッセージ キューを使用すると、必要な任意の言語でワーカー プログラムを作成できます。これらは、別の言語、環境、またはサーバーで何かを行う必要がある場合に最適なソリューションです。

メッセージ キューはたくさんありますが、私はGearmanの大ファンです。これは、memcached を提供したのと同じ人々によって構築されました。PECL 拡張を見てみましょう。

于 2013-01-12T03:37:54.703 に答える