2015-03-22 7 views
4

На Laravel 4.2 & Laravel ForgeJOB_TOO_BIG Pheanstalk - что можно сделать?

Я сделал ошибку и случайно толкнул какой-то код на производстве разъединяет, но там была ошибка, и она подтолкнула работу в очереди, не удаляя его когда-то сделали. Сейчас я ничего не могу в очереди нажать больше, я получаю:

Pheanstalk_Exception JOB_TOO_BIG: Данные задания превышает сервера применяются ограничения

Что я могу сделать?

ответ

7

Это потому, что вы пытаетесь хранить слишком много данных в самой очереди. Попробуйте сократить данные, которые вы нажимаете на очередь.

Например, если ваше задание очереди связано с использованием моделей, просто передайте идентификатор модели в очередь и как часть задания выберете их из базы данных, а не передайте очередь всего экземпляра модели.

Если вы используете красноречивые модели, они автоматически обрабатываются таким образом.

+0

Спасибо человеку, есть ли причина, по которой он работал нормально, но теперь этого больше нет? Никогда раньше эта проблема не возникала до тех пор, пока я не забыл удалить задание. С тех пор он продолжает сбой каждый раз, когда очередь имеет немного данных. - Попробует пропустить только идентификатор, чтобы попробовать, но это странно .... – commandantp

+0

@commandantp извините, очень поздно ответ, только что получил уведомление по этому сообщению. Объем данных, которые вы ранее хранили, не попадал в пределы данных для каждой задачи, тогда как теперь вы пытаетесь нажать на очередь. Это может быть больше столбцов в вашей базе данных и т. Д. – Wader

+0

Я читал код и задавался вопросом, почему мы передавали идентификатор вместо объекта модели. Хорошо, это хорошо проясняет! –

16

Вы можете увеличить максимальный размер задания с параметром -z для Beanstalkd: http://linux.die.net/man/1/beanstalkd

Чтобы сделать это на Forge вам нужно SSH на сервер и редактировать файл /etc/default/beanstalkd.

Добавьте следующую строку (или раскомментировать существующий BEANSTALKD_EXTRA линию и редактировать его): BEANSTALKD_EXTRA="-z 524280"

Restart beanstalkd после внесения изменений: sudo service beanstalkd restart

Размер должен быть указан в байтах.

Я не уверен, что это может привести к серьезным эффектам - пока что так хорошо для меня. Я был бы признателен за любые комментарии к эффективности.

+2

Отлично! Работает как шарм, спасибо! –