我甚至不确定如何问这个问题,因为这是一个总体的概念性问题,但我想我应该试一试。
我正在尝试创建一个概念上类似于Vimeo等许多视频托管网站的流程。以Vimeo为例,用户将视频上传到主服务器,视频被添加到处理队列,并且用户可以在视频处理期间自由地执行其他操作。一段时间后,用户收到一封电子邮件,告知处理已完成,现在可以访问视频,用户可以对其执行任何操作。
我的问题是,像这样的系统是如何工作的?我的经验主要是使用PHP,其中所有处理都直接绑定到页面中的代码(或通过includes)。当用户导航离开页面时,您如何处理这样的处理?
这是我的猜测。请纠正我。用户提交的页面通过某种API Hook将他们的文件添加到处理软件队列中。处理器可能是用其他语言编写的,比如C或Java或其他语言,完成后,它会触发对某个PHP页面的调用,然后向用户发送一封电子邮件,并对视频执行所需的任何操作。
我想我只是想了解一些大网站的“黑匣子”是如何工作的,至少在概念上是这样。有人能帮我吗?对不起,这是一个如此大的,模糊的问题。
发布于 2011-04-27 05:10:48
你的问题的一个解决方案是启动一个新的进程fork,它处理视频处理和向用户发送邮件,然后主进程照常继续。这将防止主进程停止并强制用户等待处理完成。
您可以在php中阅读有关创建进程分支的信息:http://php.net/manual/en/book.pcntl.php
然后还有一些处理视频处理的应用程序,比如ffmpeg:http://www.ffmpeg.org/
您不必使用新的编程语言,只需使用exec函数:http://php.net/manual/en/function.exec.php执行一个cli应用程序,比如ffmpeg
您需要找出一种将进程排入队列的方法,以便服务器不会过载。也许需要一些功能来检查数据库中的活动进程,并等待到表中的活动进程少于允许的活动进程为止。
https://stackoverflow.com/questions/5796444
复制相似问题