Laravel Очередь импорта Excel с toCollection не работает на Heroku - PullRequest
0 голосов
/ 10 апреля 2020

Ниже приведен код для репликации проблемы в laravel 5.8

Файл маршрута

Route::get('testqueue',function(){

$var = (new \App\Imports\TestImport())->queue('user.xlsx', 'local')
                    ->onConnection('database')
                    ->onQueue('default');
                });

Тестовый файл импорта

    <?php

    namespace App\Imports;

   use Illuminate\Contracts\Queue\ShouldQueue;
   use Illuminate\Support\Collection;
   use Maatwebsite\Excel\Concerns\Importable;
   use Maatwebsite\Excel\Concerns\SkipsFailures;
   use Maatwebsite\Excel\Concerns\SkipsOnFailure;
   use Maatwebsite\Excel\Concerns\ToCollection;
   use Maatwebsite\Excel\Concerns\WithChunkReading;
   use Maatwebsite\Excel\Concerns\WithHeadingRow;
   use Maatwebsite\Excel\Concerns\WithValidation;

   class TestImport implements ToCollection, WithChunkReading, WithHeadingRow, WithValidation, SkipsOnFailure, ShouldQueue
{
    use Importable, SkipsFailures;

    public function __construct()
    {

    }

    /**
     * @param Collection $collection
     */
    public function collection(Collection $collection)
    {
          die('should execute this');
        foreach ($collection as $row) {

        }

        return $collection;
    }

    public function getProcessedRowCount(): int
    {
        return $this->row_count;
    }

    public function chunkSize(): int
    {
        return 100;
    }

    public function batchSize(): int
    {
        return 100;
    }

    public function headingRow(): int
    {
        return 1;
    }
}

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

Я пробовал неявное и явное объявление, другой формат файла, onConnection onAllConnection, задание имени очереди, пробовал разные комбинации проблем, все они работают на локальном, но не на Heroku. И файл их я пытался загрузить его несколькими способами, все они работают.

я запускаю очередь с этой командой как на локальной, так и на герою

    php artisan queue:work database --queue=default
...