2015-01-19 5 views
0

푸시 큐 작업은 동일한 클래스 내에 위치하는 사용자 정의 핸들러 메소드를 실행하기 위해 대기열에 작업을 밀어 이런 종류의 코드를 고려 $ job-> delete()를 추가하기 전에 괜찮습니다. 하지만 지금은 그 오류 제공 : Laravel 4.2 docs에서Laravel 사용자 정의 처리 방법 및 삭제 작업

exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to a member function delete() on a non-object 

푸시 큐 작업이 사용자 지정 처리기 메서드 지적에 명시 적으로 $로 대기열에서 작업을 삭제할 필요가 없습니다 왜 아무런 설명이 없다을으로 일자리> delete()? 그런 종류의 구현은 작동하지만 $ job 매개 변수가 기록되면 false입니다.

답변

1

app\config\queue.php으로 이동하여 default 키를 확인하십시오. 후자가 sync으로 설정되면 위의 동작이 예상됩니다.

sync 드라이버가 즉시 작업을 실행합니다. 즉, Queue::later은 사실 Queue::push입니다.

Queue::laterQueue::push으로 변환하면 오류없이 코드가 실행됩니다.

대기열에서 작업을 명시 적으로 삭제하는 것은 대부분의 경우 불필요합니다. 그러나 작업의 자동 삭제를 제공하지 않는 대기열 서비스를 고려해야합니다.

AWS SQS (Message Queue Service)는 큐 튜브에서 작업을 가져온 후에 자동으로 작업을 삭제합니다.

+0

기본값은 "iron"입니다 ... 그러나 IronMQ는 AWS SQS와 같은 작업을 삭제하므로이 동작을 설명 할 수 있습니다. – envision

+0

그렇다면 예; ironMQ가 자동으로 작업을 지우면 참조가 더 이상 유효하지 않습니다 (따라서'$ job'의 잘못된 값). AWS SQS와'$ job-> delete()'를 사용하면 오류가 발생하지 않습니다. – Mysteryos