我写了一个php脚本,它会自动刷新以完成一个漫长的过程。为此,我使用:
header('refresh: '.$refresh_time);
每次刷新之间的时间会根据发生的情况而变化
它在经典浏览器上运行良好,但我现在需要从shell执行此脚本。为了做到这一点,我尝试了:
php my_php_script.php
但这不起作用,因为它只执行了一次脚本(是的,这里没有刷新)。
那么,是否可以通过在命令shell中调用脚本来使用php中发送的头?
- 如果是,请启发我的知识
- 如果没有,就被干掉!!!!该死,我得更改我的代码
谢谢你的帮助!
您可以通过在php文件中使用shell命令来实现这一点。您可以使用以下代码,它将在shell中执行完全相同的操作。
$refresh_time = rand(2,10);
sleep($refresh_time);
$command = "php my_php_script.php > /dev/null &";
shell_exec($command);
在Linux系统上,您可以使用cron。在Windows上,您可以使用Windows计划任务。
基本上,你可以告诉他们什么时候执行你的脚本。
在谷歌上搜索更多详细信息。
巧妙的部分是改变时间间隔,这对你没有多大帮助。如果我能找到同样的解决方案,我一定会告诉你的。
我回答了我的问题,但我要感谢大家提供的有用提示。
由于HTML头不能通过shell调用php来使用,所以我编写了一个脚本,发送刷新头并在再次调用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命令可以响应刷新头的命令。
我错了吗?
编辑:我错了!curl-我不接缝来正确执行php代码,而只是接缝头所需要的。curl-vs seams可以工作,但为了得到标题输出,我不得不添加2>&1
署名:Jigar,Pavan Jiwnani