2015-06-01 5 views
0

Я реализую команду, которая будет обрабатывать загруженные файлы.Laravel 5 queue job freezes

Файлы могут содержать до 300 МБ данных, поэтому задание должно быть поставлено в очередь, и я также ожидаю, что для завершения потребуется некоторое время.

Моя проблема в том, что когда я запустил php artisan queue:listen, он получает задание из очереди, начинает обрабатывать его нормально, но примерно через 20 секунд он замерзает. Задача не запускает никаких исключений и не продолжается, поэтому ее не удалять из очереди.

Я использую драйвер database. Здесь чего-то не хватает?

+0

Не просматривая код, Трудно найти решение проблемы. –

ответ

1

php artisan queue:listen не выводит ошибки для пользователя. Запустите php artisan queue:work и выведет ошибки. Эта команда будет запускать только один процесс в очереди. Поэтому вам нужно убедиться, что следующий процесс - это тот, который вы хотите отлаживать.

+0

Он также замерзает. Я нашел свою «ошибку». Это своего рода ошибка. 'fgetcsv' после прочтения большого количества строк возвращает null вместо' FALSE'. Поэтому я был в бесконечном цикле. –

+0

Сколько строк? Возможно, вы исчерпали ограничение памяти. Попробуйте добавить этот оператор 'ini_set ('memory_limit', -1);' поверх вашего кода. Это удалит ограничение памяти вашего php. – krain143

+0

7000 линий. Это очень странно, потому что я использовал 'SplFileInfo'. Таким образом, где-то он возвращал «null», когда ожидал «false» для ошибки или конца файла. Поэтому я изменил его, чтобы использовать общий путь 'fopen'. Таким образом, я действительно прочитал весь файл и получил 'false' в конце файла. Проблема в том, что не все строки читаются. Около 10% не читается. Очень странно. Размышление об открытии другого вопроса. –