私はSymfonyアプリケーションでビデオ変換サービスを使用しています。私の問題は、ビデオ変換がいつ完了するかを知る必要があることです。フローは次のとおりです。ビデオ変換サービスを開始し、ビデオが正常に変換されたときに、ビデオサービスはビデオステータスを「変換済み」に更新します。失敗した場合、ステータスは「失敗」です。動画を投稿する前に動画の状態を確認しておく必要があります。サービスが変換を完了するとPHPが知る
public function setVideo(Post $post, Video $video){
if($video->getStatus() != 'ready_for_conversion'){
throw new ApiException('video cannot be processed');
}else{
$videoService = $this->container->get('app.video_service');
$videoService->submitJob($video);
$converting = true;
while ($converting) {
$status = $video->getStatus();
if($status == Video::STATUS_CONVERTED) {
break;
}elseif ($status == Video::STATUS_FAILED){
throw new ApiException('video failed');
}
}
$post->setVideo($video);
}
}
私はこのコードを実行すると、私はビデオサービスはいくつかの時間後に成功したステータスを更新していても
php.CRITICAL: Fatal Error: Maximum execution time of 30 seconds exceeded
を取得します。
動画が30秒以上変換されているようです。 'set_time_limit(600);を試してみてください。 –
これは、カスタムイベントを利用する良い例です。変換が完了したらイベントをディスパッチし、イベントリスナーでエンティティを更新することができます。あなたはあなたのコンバータのソースまたは少なくともその一部を投稿できますか? – lordrhodos