目前,我正在使用laravel中的数据库创建进程队列,以通过API处理视频。我的视频时长是5分钟。但是,超过60秒超时后,我的工作将失败。
我已经为队列超时设置了变量,但它仍然说超过60秒。
namespace App\Jobs;
class ProcessVideo implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $tries = 3;
public $timeout = 300;
private $fileUrl;
private $user;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($fileUrl,$user)
{
//
$this->fileUrl = $fileUrl;
$this->user = $user;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//process webm to text
$client = new Client([
'base_uri' => 'https://stream.watsonplatform.net/'
]);
$audio = fopen($this->fileUrl , 'r');
$resp = $client->request('POST', 'speech-to-text/api/v1/recognize', [
'auth' => ['myth', 'apikey'],
'headers' => [
'Content-Type' => 'audio/webm',
],
'body' => $audio
]);
$resp = $resp->getBody();
event(new SoundSpeech($resp,$this->user));
}
}
我对api的请求完成后,预期队列将成功。由于超时我的工作总是不知所措。我需要从php.ini配置超时吗?还是我需要为laravel使用队列超时?