2014-12-18 4 views
2

Я использую Beanstalkd для управления очередями в моем проекте Laravel. Моя работа состоит в том, как это:Laravel + Beanstalkd - работа обрабатывается, но не увольняется?

class MyJob { 
public function fire($job, $data) { 
    Log::info("Something"); 
    ..... 
    ..... 
    ..... 
    $job->delete(); 
    } 
} 

I`ve набор beanstalktd слушать на работу, как это:

php artisan queue:listen 

Так что, когда я нажимаю работу в очереди:

Queue::push('MyJob', array(
      ..... 
     ); 

Работа обрабатывается:

Processed: MyJob 

Но не выполняйте e любой из моего кода в методе огня. Что здесь происходит?

+0

Проверьте журналы laravel - есть ли ошибки? – Laurence

+0

Вы получили ответ? –

+0

Да, см. Ответ :) – stackUnderflow

ответ

0

Таким образом, проблема в моем случае состояла в том, что у меня есть два проекта на моем сервере, которые находятся в разных папках (скажем, Project1Folder и Project2Folder). Оба имеют одноименную работу - «MyJob». Поэтому я поставил очередь: слушаем в Project1Folder, но выполняем задание Project2Folder. В этом случае очередь: listen не должна обнаруживать и обрабатывать любую работу, так как она прослушивается в другой папке. Но по какой-то причине слушатель обнаруживает, что задание с тем же именем было запущено, хотя оно находится в другой папке. Это путает слушателя и обрабатывает работу, но без результата. Так что я сделал, чтобы установить очередь: listener в Project2Folder - это была папка проекта, где я хотел обнаружить задания.

Смежные вопросы