【发布时间】: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