@sr3d4cs

Почему не работает очередь импорта из Excel файла, Laravel?

Добрый вечер!

У меня есть проблемный фрагмент кода с импортом Excel файлов с использованием синхронного драйвера очередей.
readonly class BaseNumberFileCreator implements BaseNumberCreatorInterface
{
    public function __construct(private BaseNumberData $baseNumberData)
    {
    }

    public function createBaseNumber(): BaseNumber
    {
        $filePath = FilesService::putFile('/phone_numbers', $this->baseNumberData->file);

        $result = DB::transaction(function () use ($filePath) {
            $baseNumber = BaseNumberModel::create($this->baseNumberData->except('file', 'numbers', 'headers')->toArray());

            $headers = (array)json_decode($this->baseNumberData->headers);

            Excel::queueImport(new PhoneNumberImport($baseNumber->id, $headers), $filePath, 'public', \Maatwebsite\Excel\Excel::XLSX)
                ->allOnQueue(config('app.env') . '-imports')->chain([new NotifyBaseNumberOfCompletedImport($baseNumber)]);
                
            return $baseNumber;
        });

        if ($result) {
            return $result;
        }

        FilesService::deleteFile($filePath);

        throw new Exception('Error accused during file uploading');
    }
}

Я пытался задебажить проблемный участок, начал сначала с логирования модели PhoneNumberImport, но это ни к чему не привело, до этого этапа даже не доходит.

Тогда решил проверить работают ли вообще у меня очереди:
root@fb36acde9657:/var/www/html# php artisan queue:work

   INFO  Processing jobs from the [default] queue.

Сам проект у меня запущен в докере.

По логике данного кода должны импортироваться все номера из Excel файла в базу данных, но это не происходит.

В каком направлении копать?
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы