特定の日時(たとえば、明日)に実行されるLaravelジョブを作成しました。時間を上書きし、設定された実行時間の前にキューに入れられたジョブを実行する手動ボタンを追加したいと思います。ボタンをクリックすると、ajax呼び出しが作成され、ジョブIDがサーバーに送信されます。これにより、ジョブは明日ではなく今日実行されます。
次のコマンドを使用して、失敗したジョブを手動で再試行できます。
php artisan queue:retry JOBIDHERE
キューに入れられたジョブの実行に何を使用すればよいかわかりません。
ジョブIDを取得できますが、設定された実行時間より前にLaravelジョブを実行できるかどうかはわかりません。
私はGoogleで検索しましたが、そのような問題と解決策を持つ人は見つかりませんでした。
Laravel Ver 5.8を使用しています。Mysql 5.7の使用
更新:
以下は、キューに入れられたジョブのペイロードです。
Json Decodeを使用してデコードしましたが、そのキューのコマンドを更新して、キューの日付と時刻を更新し、キューに入れられたジョブレコードに保存できるかどうかはわかりません。
{"displayName":"App\\Jobs\\Payway\\UpdateCustomerInvestment","job":"Illuminate\\Queue\\CallQueuedHandler@call","maxTries":null,"delay":null,"timeout":null,"timeoutAt":null,"data":{"commandName":"App\\Jobs\\Payway\\UpdateCustomerInvestment","command":"O:40:\"App\\Jobs\\Payway\\UpdateCustomerInvestment\":17:{s:57:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000transactionType\";s:7:\"payment\";s:57:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000principalAmount\";d:9999;s:56:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000customerNumber\";s:4:\"BR-2\";s:50:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000currency\";s:3:\"aud\";s:58:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000singleUseTokenID\";N;s:55:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000payway_helper\";O:29:\"App\\Http\\Helpers\\PaywayHelper\":0:{}s:54:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000impodenceKey\";s:36:\"afedfc34-d08e-4831-a4aa-29de930d6b98\";s:49:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000headers\";a:0:{}s:60:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000localInvestmentObj\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":4:{s:5:\"class\";s:33:\"App\\Models\\Investment\\Investments\";s:2:\"id\";i:374;s:9:\"relations\";a:2:{i:0;s:8:\"investor\";i:1;s:13:\"investor.user\";}s:10:\"connection\";s:5:\"mysql\";}s:54:\"\u0000App\\Jobs\\Payway\\UpdateCustomerInvestment\u0000paywayTotals\";O:45:\"Illuminate\\Contracts\\Database\\ModelIdentifier\":4:{s:5:\"class\";s:38:\"App\\Models\\Banking\\Payway\\PaywayTotals\";s:2:\"id\";i:1;s:9:\"relations\";a:0:{}s:10:\"connection\";s:5:\"mysql\";}s:6:\"\u0000*\u0000job\";N;s:10:\"connection\";N;s:5:\"queue\";s:6:\"payway\";s:15:\"chainConnection\";N;s:10:\"chainQueue\";N;s:5:\"delay\";O:13:\"Carbon\\Carbon\":3:{s:4:\"date\";s:26:\"2019-11-12 23:35:22.752222\";s:13:\"timezone_type\";i:3;s:8:\"timezone\";s:16:\"Australia\/Sydney\";}s:7:\"chained\";a:0:{}}"}}
アップデート2:
ペイロードコマンドをデシリアライズすると、次の情報が得られました。
だから私はその遅延日を更新しようとしています、うまくいけばそれはうまくいくでしょう。
しかし、「Julian Stark」の回答から、available_atも更新する必要があるかもしれません。
私の理論では、キューが実行されると、に基づいてジョブが検索されavailable_at
ます。ただし、ジョブの実行中に遅延が発生すると、その特定の時間に実行されない可能性があります。この理論はまだテストされていません。
これら両方のdateTimeを更新し、すべてがスムーズに機能するかどうかを確認します。