15
PHPタスクを非同期で実行する
私はやや大規模なWebアプリケーションで作業しており、バックエンドのほとんどはPHPです。コードのいくつかのタスクを完了する必要がある場所がいくつかありますが、ユーザーに結果を待たせたくありません。たとえば、新しいアカウントを作成するときに、ウェルカムメールを送信する必要があります。しかし、「登録の完了」ボタンを押したときに、実際にメールが送信されるまで待たせたくありません。プロセスを開始して、すぐにユーザーにメッセージを返したいだけです。 今までのところ、私はexec()を使ってハックのように感じるものを使用しています。基本的に次のようなことをしています: exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &"); うまくいくようですが、もっと良い方法があるかどうか疑問に思っています。MySQLテーブルのタスクをキューに入れるシステムと、そのテーブルに1秒に1回クエリを実行し、見つかった新しいタスクを実行する別の長時間実行PHPスクリプトを書くことを検討しています。これには、将来、必要に応じてタスクを複数のワーカーマシンに分割できるという利点もあります。 車輪を再発明していますか?exec()ハックやMySQLキューより良い解決策はありますか?