1

我有一个脚本,我正在从带有元刷新的浏览器运行它,它在浏览器中没有任何问题,但它在 cron 中不起作用,所以我可以做什么来从 cron 每秒运行一次?我知道 sleep 我可以,但我必须在 cron 作业中创建几个 cron 选项卡,并且每次我必须运行脚本

使用睡眠我如何每 5 秒运行一次此脚本。

<meta http-equiv="refresh" content="5;url=test.php">
<?php
    $res = mysql_query("SELECT * FROM tableA where st='0' order by id asc LIMIT 1");
    $row = mysql_fetch_array($res);

    $link= $row['wl'];

    function getTitle($Url){
        $str = file_get_contents($Url);
        if(strlen($str)>0){
        preg_match("/\<\/td\><\/tr\><tr\><td colspan\=2\>(.*)\<\/td\>/",$str,$title);

            return $title[1];
        }
    }
    getTitle($link);
?>
4

2 回答 2

9

只需添加到您的 crontab

* * * * * for i in {0..59}; do curl http://your.domain.zone/page.html && sleep 1; done;

for添加是因为 cron 的运行速度不能超过每分钟一次。

于 2013-10-26T11:29:01.243 回答
1

cron 的最小调用间隔为 1 分钟

如果您需要更频繁的通话,您有多种选择:

  1. 创建一个启动的守护进程,然后在守护进程内部,您可以进行自己的检查/睡眠等。
  2. 您可以侦听文件系统事件以触发处理您需要的任何任务
  3. 您仍然可以使用 meta/js 结合 cron 来“重新加载”页面,但在这种情况下,您需要使用无头浏览器(例如 phantomjs)来处理您的页面并正确重新加载。因此,您将每分钟打开一次“页面”,并且页面将使用 js 或元标记进行 60/5=12 次重新加载。

显然3是最差的。通常,您可以使用选项 (1) 或 (2),具体取决于您的系统要求。

于 2013-10-26T12:06:33.700 回答