現在、php でジョブ キューを実装しようとしています。その後、キューはバッチ ジョブとして処理され、いくつかのジョブを並行して処理できるようになります。
私はすでにいくつかの調査を行い、それを実装するいくつかの方法を見つけましたが、それらの長所と短所を実際には認識していません.
fsockopen
たとえば、ここで説明されているように、スクリプトを数回呼び出して並列処理を行う:
PHP での簡単な並列処理
私が見つけた別の方法は、curl_multi
関数を使用することでした。
curl_multi_exec PHP ドキュメント
しかし、これらの 2 つの方法は、主にバックグラウンドで実行する必要があるキューでバッチ処理を作成するためにかなりのオーバーヘッドを追加すると思いますか?
pcntl_fork
また、問題を処理する方法と思われるものについても読みました。しかし、自分が何をしているのかを本当に理解していないと、非常に厄介になる可能性があるようです (現時点での私のように)。
も見ましたGearman
が、必要に応じてワーカー スレッドを動的に生成する必要があり、いくつかを実行して Gearman ジョブ サーバーにそれをフリー ワーカーに送信させるだけではありませんでした。特に、最終的なメモリ リークが発生しないように、1 つのジョブが実行された後にスレッドを正常に終了する必要があるためです (コードはその問題で完全ではない可能性があります)。
Gearman はじめに
私の質問は、PHP で並列処理をどのように処理するのですか? そして、なぜあなたの方法を選択するのですか?異なる方法にはどのような利点/欠点がありますか?