我目前有一个系统,在客户端,每隔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中创建一个循环,但我无法让它工作。谁能告诉我我该怎么做?提前谢谢。
答案 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脚本,方法是从curl
或wget
等命令行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}}