Php Laravel无法从crontab分派作业
如果我在控制器中使用此代码,队列将运行良好Php Laravel无法从crontab分派作业,php,laravel,laravel-5,queue,jobs,Php,Laravel,Laravel 5,Queue,Jobs,如果我在控制器中使用此代码,队列将运行良好 $job=(new ReProcessShipment($single_data->request_data))->delay(2); $this->dispatch($job); 但在crontab中使用相同的代码会引发错误 方法App\Console\Commands\AddPreProcess::dispatch不存在。{“异常”:“[object](BadMethodCallException(代码:0): 方法App\
$job=(new ReProcessShipment($single_data->request_data))->delay(2);
$this->dispatch($job);
但在crontab中使用相同的代码会引发错误
方法App\Console\Commands\AddPreProcess::dispatch不存在。{“异常”:“[object](BadMethodCallException(代码:0):方法App\Console\Commands\AddPreProcess::dispatch不存在 试着像这样使用它
$job=(new ReProcessShipment($single_data->request_data))->delay(2);
ReProcessShipment::dispatch($job);
然后得到错误
类App\Jobs\reprocessapping的对象无法转换为字符串{“exception”:“[Object](ErrorException(代码:0):类App\Jobs\reprocessapping的对象无法在转换为字符串
我无法从cronjob处理作业队列任何建议都很好。您可以通过调用作业类上的staticdispatch
方法并将作业的构造函数参数传递给dispatch
方法来创建作业,如下所示:
ReProcessShipment::dispatch($single_data->request_data)->delay(2);
确保您正在使用illumb\Foundation\Bus\Dispatchable
特性,以便能够调用作业类上的dispatch
,例如:
use Illuminate\Foundation\Bus\Dispatchable;
class ProcessPodcast implements ShouldQueue
{
use Dispatchable, ...
如果查看,您将看到静态分派
功能使用作业的参数为您创建作业,因此在分派作业之前不需要创建作业。这是分派
功能的来源:
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));
在第二个示例中,您将
$job
传递给dispatch
方法。在上面的示例中,我将作业的参数传递给dispatch
方法。您正在执行分派($job);
,我建议分派($single_data->request_data)
。