非同期 PHP タスクの実行: Exec() と MySQL キューを超えて
大規模な PHP Web アプリケーションを開発する場合、次の実行によってボトルネックを防ぐことが不可欠です。特定のタスクを非同期的に実行します。この記事では、exec() ハックと MySQL キューイングの制限を考慮して、これを達成するためのさまざまなアプローチを検討します。
Exec() ハック: 粗雑だが効果的な解決策
多くの開発者は、次の例に示すように、exec() 関数を使用してバックグラウンド タスクを開始します。
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
この間このアプローチは機能しているように見えますが、アドホックでシステムに依存する性質があるため、理想的な長期的なソリューションではありません。
MySQL キューイング: DIY アプローチ
exec() ハックを改善するには、MySQL キュー システムを実装することができます。タスクはデータベース テーブルのキューに入れられ、別の長時間実行される PHP スクリプトが定期的にテーブルをポーリングして新しいタスクを実行します。このアプローチは、複数のワーカー マシンにタスクを分散することで将来のスケーラビリティの可能性をもたらします。
より良い代替ソリューション
ただし、非同期タスクに対するより堅牢で機能豊富なアプローチ実行:
ignore_user_abort: よりシンプルだが次善の手法
最後に、ignore_user_abort オプションを検討します。このアプローチでは、ページがユーザーに送信された後でも処理を続行することで、スクリプトの不適切な終了を回避します。ユーザーの観点からは遅延が最小限に抑えられますが、知覚されるページの読み込み時間が長くなる可能性があります。
以上がPHP で「exec()」と MySQL キュー以外の非同期タスクを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。