2014-07-08 3 views
1

업로드 된 이미지의 크기를 조정하는 클래스를 만들었습니다. 이 클래스는 큐 바이저와 함께 사용됩니다. 내 개발 프로젝트에서이 클래스를 사용하면 대기열의 기본 설정은 sync으로 설정됩니다.큐에있는 객체를 데이터로 전달 laravel 4/PHP

대기열이 정상적으로 작동하지만 예기치 않은 큰 문제는 대기열에 대한 클래스 처리기에서 데이터 배열에 객체를 전달할 때 빈 array이기 때문에 발생합니다.

오브젝트의 "serialization"의 이런 종류는 내가 만든이 멋진 클래스를 구현하기위한 모든 논리를 깨뜨린 것입니다.

이 동작이 정상적인 지 묻습니다. 그렇다면 어떻게하면 큐 클래스의 데이터로 개체를 전달할 수 있습니까? 내가 어떤 도움이 정말 이해할 수있을 것이다

$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 :(
    } 

} 

내 handlerQueue 클래스의 개체를 전달하는 방법을

이입니다.

답변

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 
    } 

}