【问题标题】:PHP + shell - Start a process from PHPPHP + shell - 从 PHP 启动一个进程
【发布时间】:2011-08-01 16:06:39
【问题描述】:

祝大家有美好的一天。

我需要这样做:

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

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

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

现在唯一的问题是:

计数器似乎可以正常工作...但该过程需要一些时间才能启动,该时间可能从 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在它开始之前有一些时间(测试编解码器,检查文​​件等)。我需要得到那个时间并将它包含在计时器中,所以当流启动时,说“你好”的人。对他来说做类似“好吧……这行得通吗?是的?你好,人”这样的事情对他来说不是很好。并且不利于用户松开前 3-4 句。这就是为什么我需要 ffmpeg 启动的那一刻,并以某种方式将其传递给 php 脚本。我可以从那里管理。

【问题讨论】:

  • 我不明白这个问题。你能澄清一下吗?
  • 我会在几个小时后重新表述(我现在有一个会议)。谢谢。
  • 好的...已编辑。我添加了一些细节。

标签: php shell scripting centos


【解决方案1】:

我曾在 crontab 每 5 分钟循环一次的地方工作过,但最近 crontab 似乎每 1 分钟循环一次。这可能是一个可配置的值,所以如果您认为您的 crontab 直到几分钟后才启动,这可能是原因。

您的进程应该在时间秒值从 59 变为 00 之后启动。如果其他进程已经在使用大部分/所有系统资源,启动 crontab 条目也可能会出现轻微延迟。

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

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


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

如果您的进程运行了多个小时,为什么需要立即附加到它。如果它在前 30 秒内崩溃,是否最多等待 1 分钟才能发现它足够好?

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

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2011-10-06
    相关资源
    最近更新 更多