后台处理视频上传,什么是PHP的熟练方式?
我正在开发一个视频上传网站,我遇到了两难:上传的视频需要转换为FLV格式才能显示给访问者但是,如果我在脚本中执行命令,脚本将会挂起FFMPEG转换视频10-15分钟.
我有一个想法是在数据库中插入一条记录,指示需要处理的文件,然后使用cron作业设置为每5分钟从数据库中选择需要处理的记录,处理它们,然后更新数据库显示他们已被处理.我担心这个问题是执行了太多的进程,服务器在紧张的情况下崩溃了,所以有没有人得到任何解决方案或更好地改进我想到的过程? 好的,现在这就是我的想法,因此用户上传视频,并在数据库中插入一行,表明需要处理视频.设置为每5分钟的一个cron作业会检查需要处理的内容和正在处理的内容,比如我一次最多可以创建五个进程,因此脚本会检查是否需要处理任何视频以及需要处理多少视频正在处理,如果小于5,它会更新记录,表明它正在处理中,一旦视频处理完毕,它就会更新记录,表明它已被处理,cron作业再次启动,有什么想法吗? 解决方法
如果您期望大量流量,您应该认真考虑专用服务器.
在单个服务器上,您可以使用shell_exec和UNIX nohup命令来获取进程的PID. function run_in_background($Command,$Priority = 0) { if($Priority) $PID = shell_exec("nohup nice -n $Priority $Command 2> /dev/null & echo $!"); else $PID = shell_exec("nohup $Command 2> /dev/null & echo $!"); return($PID); } function is_process_running($PID) { exec("ps $PID",$ProcessState); return(count($ProcessState) >= 2); } 这种技术的完整描述如下:http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/ 您可以将PID列表放在MySQL表中,然后每5分钟使用一次cron作业来检测视频何时完成并更新数据库中的相关值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |