Laravelにジョブを書き込む方法を試しています。Laravelのキューとスケジューラの理解5.2
Laravelのドキュメントに従って、mail:queueを使用して電子メールを送信する単純なジョブを作成しました。
また、毎分スケジューラを呼び出すcronジョブが追加され、5分ごとにジョブが実行されます。
手動でコマンドキューを実行すると、すべてうまく動作します。
後でスケジューラ内でprintステートメントを追加したところ、奇妙な問題が見つかりました。
私はキューを実行するたびに:端末から聞いて、私は、スケジュール機能の中にある印刷メッセージを参照し、それは5秒ごとに印刷されます。
私の質問はキュー:listenスケジュール機能を呼び出しますか?はいの場合、スケジュールを追加する必要があるのはなぜですか:をcronジョブとして実行しますか?
私が使用したコード:
protected function schedule(Schedule $schedule){
error_log("inside scheduler");
$schedule->call(function() {
dispatch(new \App\Jobs\SendEmail);
})->everyFiveMinutes();
}
これは私がターミナル上で実行コマンドがあります。私は(5秒毎)
スケジューラ中に入る
php artisan queue:listen
出力スケジューラスケジューラ 内部
内部
...
は、誰かがここで何が起こっているかを説明できますか?
から
SendEmail.php
public function handle() {
//do some task here
Mail::queue("emails.send_update", [], function($message) {
$message->to("[email protected]");
$message->subject('Status has been updated');
});
}
解決策はありますか。そして私は 'schedule()'関数が 'queue:listen'によってなぜ実行されるのかも混同しました。 –