admin で長いスクリプト、Symfony でタスク?
質問
管理者パネルで、管理者がアクションを選択すると、API からデータがロードされ、DB に保存されます。インポートする内容に応じて、2 秒から 3 分かかる場合があります。
管理者が終了を待たないように、Symfony でスレッドのように作成するにはどうすればよいですか。それが終わったら、結果を確認するように彼に言いますか?
タスクはこの問題の答えですか?
ありがとう!
解決
symfony 固有ではありませんが、バックグラウンドプロセスを開始する必要があります。
私は symfony のコマンドラインスクリプト用ツールには詳しくありませんが、使えるものはあると思います。
次に、コントローラーでは、次のようなものが必要になります (Unixy ホスト上にあると仮定して)。
public function executeYourBackgroundTask(){
// first, you might want to create some kind of entry in a table to keep track of jobs.
// Imagine you've got a table to keep track of this stuff
$job = new Backgroundjob();
$job->user_id = $this->getUser()->getId();
$job->starttime = time();
$job->someArgument = $someArgument; //anything the job script needs for input.
$job->save();
$jobId = $job->getId();
//start a job in the background.
exec('php /path/to/your/background/script.php ' . $jobId .' &');
//your view should just tell the user "Your job is being processed, you'll be notified when it is done"
}
バックグラウンド プロセス (/path/to/your/background/script.php 内) は、渡された jobId を取得し、ジョブ レコードを取得し、保存されている入力を使用してジョブを実行する必要があります。データの取得とデータベースへの詰め込みが完了したら、テーブルに終了時刻を設定し (これによりジョブが完了としてマークされます)、その後、ユーザーに通知するためにやりたいこと (電子メールを送信するか、メッセージを挿入する) を行う必要があります。メッセージテーブルへの行の種類など)
所属していません StackOverflow