我正在制作一个转码服务器,它使用FFMPEG将视频转换为flv。在用户上传视频后,它将在亚马逊简单队列服务中排队等待处理。系统是linux ubuntu。
不是每1分钟运行一次CRON,我想知道是否可以连续运行几个PHP脚本(下载排队文件,下载进程等)。他们每个人都有自己的队列,每10秒左右就会读一次,以寻找新的任务。
我的问题是:
如何检测脚本是否已在运行?我每隔1分钟运行一次CRON,如果其中一个程序没有运行,我会再次加载它。这样的东西是怎么在linux上完成的? PID文件?
感谢您的帮助, 伊恩
答案 0 :(得分:1)
我可能会选择基于gearman (引用wikipedia)的解决方案,而不是仅使用纯PHP,
Gearman是一个开源应用程序 框架[...]。
Gearman是 旨在分发适当的 计算机任务到多台电脑, 如此大的任务可以做得更多 快。
由于gearman扩展,它适用于PHP,并且将为您处理大部分排队的事情。
请注意,当您有更多视频进行转码时,它也可以提供便利,从而可以更轻松地扩展到多个服务器。
答案 1 :(得分:0)
是的,你可以使用PID文件
或临时表,或memcache,e.t.c。
但我确实喜欢这样:
通过cron运行执行转换视频的脚本,并检查进程是否终止
这个cron脚本让电影需要从数据库或文件转换
答案 2 :(得分:0)
PHP的PEAR存储库有一个System_Daemon
类,用于从PHP创建守护进程。我已经将它用于一些效果很好的系统。
答案 3 :(得分:0)
我专门为此问题创建了一个类似的脚本
检查:https://github.com/SirNarsh/EasyCron 我的想法是将脚本的PID保存到文件中,然后通过检查/ proc / PID存在来检查进程是否正在运行