2015-04-30 8 views
3

У меня «случайно» некоторые рабочие места не работают в моей очереди с beanstalked. Два вопроса:Почему неудачная работа в очереди Beanstalkd - Laravel 4.2

1/Просмотрев таблицу неудачных заданий в БД, как я могу отследить, что входит в систему? Закрытие данных означает «ничего» при чтении этого файла. Есть ли чем заняться, чтобы иметь больше информации?

2/Я прошел через консоль журналов Laravel и это то, что не удается:

[2015-04-29 15:40:51] production.ERROR: exception 'ErrorException' with message 'Trying to get property of non-object' in /home/forge/api.hello.me/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php(99) : eval()'d code:6 
Stack trace:... 

Однако я понятия не имею, что именно неисправного ... StackTrace не поможет и только начинается в

[internal function]: Jeremeamia\SuperClosure\SerializableClosure::{closure}(Object(Illuminate\Queue\Jobs\BeanstalkdJob)) 
#2 /home/forge/api.hello.me/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php(64): ReflectionFunction->invokeArgs(Array) 

и закончил несколько строк позже в

#15 /home/forge/api.hello.me/vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
    #16 /home/forge/api.hello.me/artisan(59): Symfony\Component\Console\Application->run() 
    #17 {main} [] [] 

Любая идея о том, как я мог понять/найти НУ Что происходит? Очередь даже не проваливаясь все время ...

пс: полный трассировки стека:

#0 /home/forge/api.hello.me/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php(99) : eval()'d code(6): Illuminate\Exception\Handler->handleError(8, 'Trying to get p...', '/home/forge/api...', 6, Array) 
#1 [internal function]: Jeremeamia\SuperClosure\SerializableClosure::{closure}(Object(Illuminate\Queue\Jobs\BeanstalkdJob)) 
#2 /home/forge/api.hello.me/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php(64): ReflectionFunction->invokeArgs(Array) 
#3 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Queue/IlluminateQueueClosure.php(36): Jeremeamia\SuperClosure\SerializableClosure->__invoke(Object(Illuminate\Queue\Jobs\BeanstalkdJob)) 
#4 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(96): IlluminateQueueClosure->fire(Object(Illuminate\Queue\Jobs\BeanstalkdJob), Array) 
#5 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php(50): Illuminate\Queue\Jobs\Job->resolveAndFire(Array) 
#6 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(205): Illuminate\Queue\Jobs\BeanstalkdJob->fire() 
#7 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(157): Illuminate\Queue\Worker->process('beanstalkd', Object(Illuminate\Queue\Jobs\BeanstalkdJob), '3', '0') 
#8 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(105): Illuminate\Queue\Worker->pop('beanstalkd', 'default', '0', '10', '3') 
#9 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(67): Illuminate\Queue\Console\WorkCommand->runWorker('beanstalkd', 'default', '0', '128', false) 
#10 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Console/Command.php(112): Illuminate\Queue\Console\WorkCommand->fire() 
#11 /home/forge/api.hello.me/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(253): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#12 /home/forge/api.hello.me/vendor/laravel/framework/src/Illuminate/Console/Command.php(100): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#13 /home/forge/api.hello.me/vendor/symfony/console/Symfony/Component/Console/Application.php(889): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#14 /home/forge/api.hello.me/vendor/symfony/console/Symfony/Component/Console/Application.php(193): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Queue\Console\WorkCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#15 /home/forge/api.hello.me/vendor/symfony/console/Symfony/Component/Console/Application.php(124): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) 
#16 /home/forge/api.hello.me/artisan(59): Symfony\Component\Console\Application->run() 
#17 {main} [] [] 
+0

В этом случае журнал stacktrace и ошибок не очень полезен. Не могли бы вы разместить текст в очереди? – Bogdan

+0

, просмотрев неудавшееся задание, вы можете увидеть вызываемый класс/функцию. распечатать журналы и найти, где он сбой ... вы можете отменить задания из неудавшейся очереди, чтобы вы могли уловить эти задания и воспроизвести их. – NiRR

+0

Нам нужно посмотреть, что вы нажимаете. – Ravan

ответ

0

путь Laravel очереди работать будет сериализовать все данные, вы предоставляете как payload, и он прилипает, что в вашей базе данных. Когда вы обрабатываете очередь, она будет magical unserialize все эти данные, чтобы вы имели в основном тот же объект в памяти, что и вы, когда вы выталкивали его в очередь. Проблема возникает, когда вы меняете определение класса сериализованного объекта, или ваш объект не совсем сериализуется правильно (что, как представляется, здесь) ...

Я предлагаю вам попробовать не сериализовать анонимные функции , потому что Laravel использует SuperClosure для этого, и это довольно взломанно.

[internal function]: Jeremeamia\SuperClosure\SerializableClosure::{closure}(Object(Illuminate\Queue\Jobs\BeanstalkdJob))

Попробуйте толкая более простые объекты, в свою очередь Beanstalk (т.е. не передавать объекты в очереди), и вы не будете иметь эту проблему.

+0

Спасибо, я попытаюсь изменить это снова, странно, что очереди получают только идентификаторы или строку, а затем снова загружают модели один раз в очередь. – commandantp

+0

Как выглядят данные в таблице? – infomaniac

+0

Только идентификационный номер, автоинкрементный. Ах ... Имя пользователя тоже, может быть, специальные символы могут вызвать проблемы? – commandantp

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

  • Нет связанных вопросов^_^