я использую 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
Способ работы очередей в 4.2 отличается от 5; первый аргумент в функции, которая обрабатывает задачу очереди, фактически является экземпляром задания очереди, вторым аргументом будут ваши данные:
class SendEmail {
public function fire($job, $data)
{
//
}
}
В соответствии с примером из документация.
Ваш код должен был бы разрешить первый аргумент:
public function My_Queue_Function( $job, $Data )
{
$Person_id = $Data['Person_id'];
//Other code
}
Других решений пока нет …