1

PHP で記述された Web アプリがあり、コア フレームワークとして Symfony2 を使用しています。

10 分ごとに何千もの小さなネットワーク リクエストを定期的に実行する必要があり、これらのジョブを競合したり重複したりせずに非同期で実行するための最適なソリューションを見つけようとしています。

現在、cronジョブがPHPコマンドスクリプトを実行する、非常に基本的で洗練されていないソリューションがあります。このコマンドは、データベース内の各エントリを同期的に処理し、ネットワーク リクエストを送信します。その要求が完了する (または失敗する) と、次の要求に進みます。すべてのエントリを反復処理すると、存在し、cron ジョブから再度実行されます。

書き換えのために、ジョブを並行して実行するためのソリューションとしてphp-resquepcntl_forkを検討しました。これにより、実行が大幅に高速化されます。また、PHP から複数のノンブロッキング ソケット リクエストを実行することも検討しましたが、これまでのところ、分離されたジョブのシンプルさを好みました。

4

2 に答える 2

1

http://php.net/pthreads

http://github.com/krakjoe/pthreads

github の例... ディストリビューションに含まれています。github のコードを使用します。まだリリースされていない修正が含まれています。

于 2013-01-09T21:42:46.640 に答える
1

PHP は従来の意味でのスレッド化を行うことができないため、あなたがしようとしていることは、あなたが考えている方法では実際には不可能です。で (おそらく) 最適なソリューションを見てきましたpcntl_forkが、それでも真の非同期にはなりません。代わりに cron を使用してこれを達成することを検討しましたか?

于 2013-01-09T17:53:05.967 に答える