PHP + shell - 从PHP开始一个进程

时间:2011-04-08 16:32:45

标签: php shell scripting centos

大家好日子。

我需要这样做:

从这个世界的某个地方的计算机,我需要访问一个特定的URL并开始一个过程。唯一的问题是,因为这个过程可能会持续超过5个小时并且可能会返回一些错误(过程将移动它们)像exec,shell_exec等的PHP命令不起作用(不知道为什么但是......所有返回错误并停止执行)...所以我尝试了这个:

  • 我制作了一个运行脚本的cron
  • 使用php编写脚本文件

一切正常但我需要返回一个计数器,告诉我进程何时开始,当我运行编辑shell脚本的php脚本时,我返回系统的小时并开始计数直到下一整分钟(当脚本将被执行)。

现在唯一的问题是:

计数器SEEMS工作正常......但是这个过程需要一些时间才能启动,时间可能会在3-4秒到1分钟之间变化。我的问题是......至少如果没有确切的启动时间和启动时间的确切时间,我是否可以获得一些提示?

我不知道......就像写一个文件和一个PHP脚本阅读它一分钟,看看有什么变化?

好的......我答应我会添加一些细节:

流程正在流式传输。生活。所以这就是我需要做的事情:

创建一个流 在流启动时为用户提供计数器

我使用ffmpeg进行流式传输。 start.php有类似的内容:

   // Create a file called script.sh

   $string = "ffserver & ffmpeg -i pipe.avi http://localhost:8090/feed1.ffm& echo exit 0 > script.sh& exit 0";

   //write string to script.sh
   //create a file that contains the exact time when the script was run.

cron看起来像这样:

   * * * * * /var/www/html/script.sh > /dev/null
   and some other crons that doesn't matter

所以我可以创建一个计数器来获取脚本运行的时间并计算到cron运行的下一分钟。问题是ffmpeg有一些时间,直到它开始(测试编解码器,检查文​​件等)我需要得到那个时间并将它包含在计时器中,所以当流启动说话的人说“你好”。对他来说不好做“好吧......这有用吗?对吗?你好ppl。”并且不利于用户松开前3-4个句子。这就是为什么我需要ffmpeg启动并以某种方式将其传递给php脚本的那一刻。我可以从那里管理。

1 个答案:

答案 0 :(得分:0)

我曾在crontab每隔5分钟进行一次循环的地方工作,但最近crontab似乎每1分钟循环一次。它可能是一个可配置的值,所以如果你不认为你的crontab在几分钟之内就开始了,可能是原因。

您的进程应该在秒值从59移动到00之后开始。如果某个其他进程已经在使用大部分/全部系统资源,则启动crontab条目时可能会有一些小的延迟。

但是从另一个角度来看,如果你要创建具有特定时间值的crontab条目,那么你知道什么时候开始查看,+ 2-3秒,对吗?

请修改您的帖子,以包含您的系统创建的crontab条目的示例(其中是否有'*',是我的主要兴趣)。


重读你的帖子,我发现你并没有以编程方式创建crontab条目。没关系。

如果您的流程运行了好几个小时,为什么需要立即连接它。如果它在前30秒内崩溃,是不是最多等待1分钟才发现它足够好?

最后,在shell环境中,有99.99999%的时间,一种从一开始就捕获进程输出的方法。必须等待,开始获得输出的想法需要更多解释。这是程序在远程计算机上运行的问题吗?远程程序应捕获它的输出,然后您将该输出作为单独的子/协同进程。

我希望这会有所帮助。