PHP で記述された Web アプリがあり、コア フレームワークとして Symfony2 を使用しています。
10 分ごとに何千もの小さなネットワーク リクエストを定期的に実行する必要があり、これらのジョブを競合したり重複したりせずに非同期で実行するための最適なソリューションを見つけようとしています。
現在、cronジョブがPHPコマンドスクリプトを実行する、非常に基本的で洗練されていないソリューションがあります。このコマンドは、データベース内の各エントリを同期的に処理し、ネットワーク リクエストを送信します。その要求が完了する (または失敗する) と、次の要求に進みます。すべてのエントリを反復処理すると、存在し、cron ジョブから再度実行されます。
書き換えのために、ジョブを並行して実行するためのソリューションとしてphp-resqueとpcntl_forkを検討しました。これにより、実行が大幅に高速化されます。また、PHP から複数のノンブロッキング ソケット リクエストを実行することも検討しましたが、これまでのところ、分離されたジョブのシンプルさを好みました。