亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 無法從 crontab 調度作業

Laravel 無法從 crontab 調度作業

PHP
開心每一天1111 2022-01-14 17:22:24
如果我在控制器排隊中使用此代碼效果很好 $job=(new ReProcessShipment($single_data->request_data))->delay(2); $this->dispatch($job);但在 crontab 錯誤中使用相同的代碼方法 App\Console\Commands\AddPreProcess::dispatch 不存在。{"exception":"[object] (BadMethodCallException(code: 0):Method App\Console\Commands\AddPreProcess::dispatch 不存在。試圖像使用它一樣 $job=(new ReProcessShipment($single_data->request_data))->delay(2); ReProcessShipment::dispatch($job);然后得到錯誤類 App\Jobs\ReProcessShipment 的對象無法轉換為字符串 {"exception":"[object] (ErrorException(code: 0): 類 App\Jobs\ReProcessShipment 的對象無法轉換為字符串我無法從 cronjob 處理作業隊列,任何建議都會很棒。
查看完整描述

1 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

您可以通過在作業類上調用靜態方法并將作業的構造函數參數傳遞給該方法來分派作業,如下所示:dispatchdispatch


ReProcessShipment::dispatch($single_data->request_data)->delay(2);

確保您使用Illuminate\Foundation\Bus\Dispatchabletrait 能夠調用dispatch作業類,例如:


use Illuminate\Foundation\Bus\Dispatchable;


class ProcessPodcast implements ShouldQueue

{

    use Dispatchable, ...

如果您查看源代碼,您會發現靜態dispatch函數使用作業的參數為您創建作業,因此您無需在調度作業之前創建作業。這是dispatch函數的來源:


public static function dispatch()

{

    return new PendingDispatch(new static(...func_get_args()));

}

所以它本質上改變了這個:


ReProcessShipment::dispatch($single_data->request_data);

進入這個:


new PendingDispatch(new ReProcessShipment($single_data->request_data));


查看完整回答
反對 回復 2022-01-14
  • 1 回答
  • 0 關注
  • 179 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號