我创建了一个类,负责在上传图像后调整图像大小。该类将与队列遮罩一起使用。在我的开发项目中使用此类时,队列的默认设置将设置为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 :(
}
}
任何帮助都将非常感激。
答案 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
}
}