Я создал задание laravel для выполнения в определенную дату и время, скажем, на завтра, но я хочу иметь ручную кнопку, которая может переопределить время и выполнить это задание в очереди до установленного времени выполнения,
, чтобы при нажатии кнопки на сервер создавался ajax-вызов с отправленным ему идентификатором задания, и он выполнял это задание сегодня, а не завтра.
Для невыполненных заданий мы можем вручную повторить это невыполненное задание,Для этого мы можем использовать следующую команду:
php artisan queue:retry JOBIDHERE
, но я не уверен, что использовать для выполнения уже поставленного в очередь задания, которое ставится в очередь для выполнения на потом.
Я могу получить идентификатор работы. Просто возможно выполнить задание 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:
Когда я отменил сериализацию команды полезной нагрузки.
я получил следующую информацию.
![enter image description here](https://i.stack.imgur.com/uHWEC.png)
Так что я пытаюсь обновить эту дату задержки, надеюсь, она будет работать.
Но из ответа "Джулиана Старка" мне, возможно, также придется обновить available_at.
Итак, моя теория состоит в том, что при запуске очереди она будет искать задания на основе available_at
, но когда задание выполняется и будет иметь задержку, оно может не исполниться в это конкретное время. Это - только теория, еще не проверенная.
Вы обновите оба этих dateTimes и проверите, все ли работает гладко.