我使用 beanstalkd 和 Laravel 对某些任务进行排队,但是我无法将数据发送到处理队列的函数,这里是我的代码
//Where I call the function
$object_st = new stdClass();
$object_st->Person_id = 2 ;
//If I do this: echo($object_st->Person_id); , I get 2
Queue::push('My_Queue_Class@My_Queue_Function', $object_st );
处理队列的函数如下
public function My_Queue_Function( $Data )
{
$Person_id = $Data->Person_id; //This generate the error
//Other code
}
错误说:
[ErrorException]
未定义属性:Illuminate \ Queue \ Jobs \ BeanstalkdJob :: $ Person_id
答案 0 :(得分:1)
4.2中队列的工作方式不同于5;处理队列任务的函数中的第一个参数实际上是一个队列作业实例,第二个参数是你的数据:
class SendEmail {
public function fire($job, $data)
{
//
}
}
根据documentation的例子。
因此,您的代码需要允许第一个参数:
public function My_Queue_Function( $job, $Data )
{
$Person_id = $Data['Person_id'];
//Other code
}