如何通过php通过shell使用刷新html头

时间:2015-02-20 18:21:34

标签: php html shell header

我编写了一个自动刷新的PHP脚本来执行一个很长的过程。 为此,我使用:

header('refresh: '.$refresh_time);

每次刷新之间的时间根据发生的情况而改变

它在经典浏览器上运行良好,但我现在需要从shell执行此脚本。 为此,我尝试了:

php my_php_script.php

但这不起作用,因为它只执行一次脚本(是的,这里没有刷新)。

那么,是否可以通过在命令shell中调用脚本来使用在php中发送的头文件?

  • 如果是,请启发我的知识。
  • 如果不是,请注意!!!!该死的,我已经改变了我的代码!

感谢您的帮助!

3 个答案:

答案 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