Код: Выделить всё
public function handle(): void
{
set_time_limit(0);
$apiResponse = Http::get('https://url.com?',
[
'key' => 'keystring',
'fileId' => $orderProduct->file_name,
]);
if($apiResponse->failed()){
if($apiResponse->clientError()){
Log::error($apiResponse->clientError());
}
if($apiResponse->serverError()){
Log::error($apiResponse->serverError());
}
Log::error('Released back to jobs and retry at '.now()->addMinutes(360));
$this->release(now()->addMinutes(360));
}
if($apiResponse->successful()){
Log::info('200 status range response for order');
$fileLink = $apiResponse->body();
$targetFile = $this->createFilename();
try{
$disk = Storage::disk('r2');
$result = $disk->put(
$targetFile,
fopen($fileLink, 'r'));
} catch (Throwable $e){
Log::error('Could not Upload file '.$e->getMessage());
}
if($result == true){
Log::info('Move to Cloudflare successful');
}else{
Log::error('Move to Cloudflare FAILED');
Log::error('Released back to jobs and retry at '.now()->addMinutes(360));
$this->release(now()->addMinutes(360));
}
}
}
Это заставило меня задуматься о тайм-аутах и о том, являются ли передаваемые и загружаемые файлы особенно большими. Я изучил конкретный PDF-файл, его размер составляет 1,6 ГБ. Я просмотрел таблицуfail_jobs и увидел в исключении, что тайм-аут действительно истекает.
Код: Выделить всё
Illuminate\Queue\TimeoutExceededException: App\Jobs\MyJob has timed out. in /var/www/vhosts/domain.co.uk/subdomain.domain.co.uk/vendor/laravel/framework/src/Illuminate/Queue/TimeoutExceededException.php:15
Код: Выделить всё
//app/Jobs/MyJob.php
public $timeout = 2400;
//config/queue.php
'retry_after' => 2400,
Есть ли способ при запуске задания узнать, сколько попыток оно предприняло ранее? Например, если задание выполняется в третий раз (третий перед сбоем), я мог бы вставить условие, которое загружает и выгружает вместо потоковой передачи (я хочу сделать потоковую передачу опцией по умолчанию, поскольку она работает большую часть времени и только возвращается к традиционной загрузке/выгрузке в крайнем случае).
Подробнее здесь: https://stackoverflow.com/questions/786 ... pite-incre