-2

//我需要重复运行这个脚本,时间间隔可以由用户设置

// 检查互联网连接

if (!$sock = fsockopen("www.google.com", 80, $errno, $errstr,20))
    {
?>
<script type="text/javascript">

alert("Connection problem");

</script>

<?php       
    }

// 从数据库中检索数据并检查站点是否已关闭

else
    {
    for($i=0;$i<count($res);$i++)
        {
        $fp=fsockopen($res[$i]['url'],80,$errno,$errstr,30);
        if($fp==false)
            {
 ?>
 <script type="text/javascript">

 alert("Website is down");

 </script>

 <?php

// 将数据写入数据库并发送邮件

mail($email[0]['email_id'],"website is down",$res[$i]['url']." is down");
    $inputs=array('website_id'=>$res[$i['website_id'],
    'date'=>date("Y-m-d H:i:s"),'reason'=>"website down");
$obj3->addLog($inputs);
         }
    }
}
sleep(300);
}
4

3 回答 3

3

cron服务。这里已经有人解释过了。

如果你想让它保持网页的形式,自动重新加载,那么看看 JavaScript 函数setTimeout

于 2012-06-11T05:55:16.483 回答
1

您对 cron 的问题是 this "and the time interval can be set by a user"

您可以使用cron这样的方式,即每 30 秒或每 N 秒运行一次脚本。这是您运行脚本的最小粒度

现在,如果用户设置该脚本必须每 30 分钟运行一次,那么您在脚本中做的第一件事就是检查是否需要继续执行脚本 - 如果最后一次运行是在该用户设置的 30 分钟之前。脚本伪是这样的:

1) load last run from DB, compare it with interval - do we need to proceed, if not exit
2) do what script needs to do
3) save to the DB last run time

当然,这一切只是必要的,如果用户需要能够动态更改运行间隔并且不想触摸 cron。

于 2012-06-11T06:02:19.490 回答
0

有几种方法可以做到这一点。首先,您可以使用cron 作业在设定的时间自动运行脚本。您的 javascript 将无法工作,因为 PHP 脚本将直接在服务器上运行,您将无法在浏览器中显示任何内容。

如果您希望用户在执行所有这些操作时打开页面,以便脚本可以在屏幕上报告数据,我只需将 URL 中的时间设置为 GET 参数mypage.php?refreshTime=1800,然后使用读取它$_GET['refreshTime'],然后使用以下行设置刷新时间。

<meta http-equiv="refresh" content="$refreshTime">

这将导致页面在$refreshTime几秒钟后重新加载。你的 PHP 做它需要做的任何事情都会在每次刷新时运行,就像你现在加载页面时一样。

于 2012-06-11T05:56:46.187 回答