我在我的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