我检查了之前提出的问题,但没有找到所需的解决方案。这是问题清单, Laravel & Laravel Forge returns “MaxAttemptsExceededException:” even when tries are set at 1,Asynchronous Laravel Jobs,Laravel job overwriting other jobs?
我正在尝试在按钮单击事件上使用Laravel作业借助FFMPEG转换所有视频(也许以MB或GB为单位)。
不使用Job,代码可以正常工作。
这是Controller的代码示例,
public function uploadSelected(Request $request)
{
$input = $request->all();
$ids = explode(',', $input['ids']);
$this->dispatch(new FTPConverting($ids, 0));
return redirect()->to('videos/ftp-videos');
}
在工作中,手柄就像这样
public function handle()
{
foreach ($this->videos as $id) {
if (file_exists(storage_path('app/public/temp_videos/' . $id))) {
copy(storage_path('app/public/temp_videos/' . $id), storage_path('app/public/temp_videos/uploaded/' . $id));
$video = TempVideo::create([
'original_name' => $id,
'disk' => 'public',
'video_path' => 'temp_videos/uploaded/' . $id
]);
$this->video_without_watermark($video->video_path, $video->id, $video->disk);
$this->streaming_without_watermark($video->video_path, $video->id, $video->disk);
if ($video->upload_status == 'Converted') {
unlink(storage_path('app/public/temp_videos/' . $id));
unlink(storage_path('app/public/temp_videos/uploaded/' . $id));
}
}
}
}
在video_without_watermark
和streaming_without_watermark
函数中,有使用FFMPEG来转换文件的逻辑。
请让我知道我在做什么错或可能的解决方法。
修改 作业表失败的日志
Illuminate \ Queue \ MaxAttemptsExceededException:App \ Jobs \ FTPConverting尝试了太多次或运行了太长时间。该作业可能先前已超时。在/var/www/html/screwbox/vendor/laravel/framework/src/Illuminate/Queue/Worker.php:401