从服务器端重复调用PHP文档

时间:2014-02-06 16:08:04

标签: php server-side intervals

我目前有一个系统,在客户端,每隔X秒调用一次这个Update函数:

var Update = function(){
    $.getJSON("PHP/Update.php",{
        userid: userID },
        function(json){
               doSomething();
    });
}

在PHP文件中,会更新一些值,并将这些新值发送回客户端。

<?php
    session_start();
    include 'dbconnect.php';

    $userid = $_GET['userid'];

    //Change some values in the database
    //Add these new values to $json array

    echo json_encode($json);
    mysqli_close($link);
?>'

当只有一个客户端始终处于活动状态时,此功能非常有用。当有多个客户端或没有客户端处于活动状态时。所以我想要的是这个PHP文件每X个时间被调用一次,无论有多少个客户端。我意识到我可能必须在PHP中创建一个循环,但我无法让它工作。谁能告诉我我该怎么做?提前谢谢。

1 个答案:

答案 0 :(得分:1)

用于在unix样式的操作系统中计划事物的工具是cron。如果您的服务器运行MS Windows,则需要使用其他一些调度程序。

有两种方法可以使用cron来运行脚本。

首先,如果您有可用的CLI版本的PHP(而不是Apache模块或fcgi版本),您可以直接运行它。在我的系统上,每分钟运行一次脚本的cron作业可能如下所示:

* * * * * /usr/local/bin/php /path/to/your/script.php

请注意,在您的系统上,php二进制文件可能位于/usr/bin//opt/local/bin/或其他位置。您需要查看操作系统的软件包存储库以找出位置,或从终端输入which php

如果您在脚本开头使用“shebang”,则可以使用更简单的cron作业:

* * * * * /path/to/your/script.php

有关运行PHP shell脚本的更多信息,请访问here。尽管如此......如果您直接启动这样的脚本,他们将以拥有cron作业的用户身份运行,这可能具有安全性(或至少是权限)的含义。如果你不明白这意味着什么,请在做之前提出更多问题!

如果您没有有可用的命令行PHP,您仍然可以通过cron运行PHP脚本,方法是从curlwget等命令行HTTP客户端获取它fetch* * * * * curl -o /dev/null http://example.com/path/to/script.php (取决于您的操作系统)。例如:

* * * * * wget -O /dev/null http://example.com/path/to/script.php

man crontab

在unix系统上,您可以man 5 crontab获取有关如何安装cron作业的说明,也可以* * * * * /path/to/your/script.php * * * * * sleep 20; /path/to/your/script.php * * * * * sleep 40; /path/to/your/script.php (取决于您的操作系统)获取有关设置特定时间格式的说明。请注意,cron使用1分钟的粒度。如果你想要更高的频率,你可以伪造它。例如,每分钟三次:

*/5  * * * 1-5 /path/to/your/script.php
*/10 * * * 6-7 /path/to/your/script.php

如果您想要更低的频率,请使用crontab's documented format。例如,工作日每五分钟一次,但周末每十分钟一次:

{{1}}