2011-03-12 29 views
2

我正在制作一个转码服务器,它使用FFMPEG将视频转换为flv。用户上传视频后,排队等待在亚马逊简单队列服务中处理。系统是Linux的Ubuntu的。连续运行PHP脚本等待视频转码

而不是每1分钟运行CRON我不知道是否有可能连续运行几个PHP脚本(下载队列文件,处理下载等)。他们每个人都有自己的队列,每10秒左右就会查看一次新任务。

我的问题是:

如何检测脚本是否已在运行?我会每隔1分钟运行一次CRON,如果其中一个程序不运行,我会再次加载它。这些东西是如何在Linux上完成的? PID文件?

感谢您的帮助, 伊恩

+0

您是否考虑过使用ajax来测试它是否已完成上传? – Trevor

+1

@Trevor这与问题没有任何关系。 – ceejayoz

回答

0

是的,你可以使用PID文件
或临时表,或内存缓存,e.t.c.

但我这样做:
由cron运行一个执行转换视频脚本,并检查过程被终止或不
这cron的脚本让电影有什么需要从数据库转换或文件

0

PHP的PEAR存储库有一个System_Daemon类,用于从PHP创建守护程序。我已经将它用于一些结果良好的系统。

+0

Tahnknk!我会看看它。 – Ian

1

相反,只有纯PHP这样做的,我可能会用基于gearman(报价wikipedia)溶液中去:

的Gearman是一个开源的应用程序框架 [...] 。
Gearman是 旨在将合适的 电脑任务分配给多台电脑, 这么大的任务可以更快地完成更多 。


它与PHP运行良好,这要归功于gearman扩展,并且将处理大部分排队的东西给你。

请注意,当您有更多视频进行转码时,它也会促成一些事情,从而更轻松地扩展到多个服务器。

+0

嗨,我使用的是亚马逊SQS,它在添加了一些代码之后,为我提供了与gearman相同的功能(并且更少担心:带有gearman的机器)。无论如何,更换齿轮工并不能解决我的问题,即如何持续运行应用程序,等待新任务来自队列 – Ian