我编写了一个自动刷新的PHP脚本来执行一个很长的过程。 为此,我使用:
header('refresh: '.$refresh_time);
每次刷新之间的时间根据发生的情况而改变
它在经典浏览器上运行良好,但我现在需要从shell执行此脚本。 为此,我尝试了:
php my_php_script.php
但这不起作用,因为它只执行一次脚本(是的,这里没有刷新)。
那么,是否可以通过在命令shell中调用脚本来使用在php中发送的头文件?
感谢您的帮助!
答案 0 :(得分:1)
您可以通过在php文件中使用shell命令来实现这一点您可以使用以下代码在shell中执行完全相同的操作。
$refresh_time = rand(2,10);
sleep($refresh_time);
$command = "php my_php_script.php > /dev/null &";
shell_exec($command);
答案 1 :(得分:0)
在Linux系统上,您可以使用cron。在Windows上,您可以使用windows schedule task。
基本上,您可以告诉他们何时执行您的脚本。每分钟,每天,每周等等。
在Google上搜索更多详情。
棘手的部分将是改变时间间隔,对此无法帮助你。如果我找到相同的解决方案,肯定会让你知道。
答案 2 :(得分:-1)
我回答了我的问题,但我要感谢大家提供的有用提示。
由于不能通过调用php来使用HTML标头,我编写了一个脚本,可以获取发送的刷新标头,并在再次调用php脚本之前休眠所需的时间。
#!/bin/bash
my_bash_function()
{
response="$(curl -vs http://localhost/my_php_script.php) 2>&1"
refresh_regex="refresh:[[:space:]]([0-9]+)\s*"
numeric_regex="^[0-9]+$"
if [[ "$response" =~ $refresh_regex ]] ; then
refresh="${BASH_REMATCH[1]}"
if [[ "$refresh" =~ $numeric_regex ]] ; then
sleep $refresh
my_bash_function
fi
fi
}
my_bash_function
这样,它允许我不更改php脚本,只是使用它,因为curl或php命令可以响应刷新标题。
我错了吗?
编辑:我错了!卷曲 - 我没有接缝来正确执行PHP代码,但只有标题需要。卷曲-vs接缝工作,但要获得标题输出,我不得不添加2>& 1致谢:Jigar,Pavan Jiwnani