在我的脚本中,我运行一个exec()函数来制作带有ffmpeg的电影文件。
问题是ffmpeg的可以在服务器上运行的只有1次,
如果2人是联机服务器和第一个已经运行的ffmpeg我希望第二个要等到第一端的进程
如何编码?
谢谢
在我的脚本中,我运行一个exec()函数来制作带有ffmpeg的电影文件。
问题是ffmpeg的可以在服务器上运行的只有1次,
如果2人是联机服务器和第一个已经运行的ffmpeg我希望第二个要等到第一端的进程
如何编码?
谢谢
在某处设置锁。
当ffmpeg启动时,在文件或数据库表中设置一个标志,将其标记为正在进行中。每次ffmpeg启动时,都要检查标志值是否为'1',如果是,请等待并在5或10秒内重试。然后当过程结束时,将标志设置为'0'。确保它是否崩溃或者你的脚本有错误,标志被设置回'0'。
或者,您可能会以不同的用户身份运行ffmpeg进程,并且一次运行多个进程。
对于耶布斯,don't implement your own queue的爱。编写一个守护进程来拾取消息并处理这些文件。
+1将Jebus拖入此:) – 2010-03-13 02:36:20
我无法编译和安装librabbitmq!我无法访问根服务器 – robert 2010-03-13 02:38:10
您可以使用异步队列。每个新请求都会作为消息添加到队列中。您的进程一次只读取一条消息并处理转换请求。
对于PHP队列,您可以尝试Dropr或类似的方法。
exec
?如果被警告禁止,因为共享主机不喜欢你以这种方式使用CPU。他们想要短暂的Http请求(在30秒内)。其余不适用于您的托管,您应该先升级。就像伊格纳西奥说,你应该安装一个消息队列(需要有shell访问的Linux机器)例如像:
希望这有助于你一点点。我也正在用java编写一个简单的任务队列,但我还没完全完成。希望在大约一周内,我可以在github上提交我的第一个版本。
谢谢,祝你好运 – robert 2010-03-13 05:19:12
如何以不同的用户身份从php运行进程? – robert 2010-03-13 02:41:55
这可以工作,并且很快,但方式效率不高。在共享主机上,您会在执行此类操作时被禁止。 – Alfred 2010-03-13 03:08:02
@robert如果你在共享主机上,很可能你不能像其他用户那样运行某些东西,除非你有多个帐户。 – JAL 2010-03-13 06:50:30