将队列上的对象作为数据laravel 4 / PHP传递

时间:2014-07-08 01:25:57

标签: laravel laravel-4 queue

我创建了一个类,负责在上传图像后调整图像大小。该类将与队列遮罩一起使用。在我的开发项目中使用此类时,队列的默认设置将设置为sync

队列工作正常,但是出乎意料的大问题是在数据数组上传递一个对象,当我在队列的处理程序上得到它时,因为空array

这种对象的"serialization"打破了我实现这个令人敬畏的课程的所有逻辑。

我想问一下这种行为是否正常,如果是的话,怎样才能将对象作为队列类中的数据传递?

这是我在handlerQueue类

上传递对象的方法
$file = Input::file('file');
$image = new Image($file);
Queue::push('HandlerQueue',['image' => $image]);


class HandlerQueue
{
   public function fire($job,$data)
   {
       dd($data['image']); // Empty array :(
   }

}

任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:4)

您无法将对象传递到队列而不进行序列化。

您可以做的是传递对象的引用,然后再次调用它。像这样(伪代码):

$file = Input::file('file');
$image = new Image($file);
$image_id = save $file and get ID  // save reference
Queue::push('HandlerQueue',['image_id' => $image_id]);


class HandlerQueue
{
   public function fire($job,$data)
   {
       $image = new Image($data['image_id']);  // use the reference and recreate the object
   }

}