Ниже приведен код для репликации проблемы в 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