2014-02-06 109 views
0

我现在有一个地方在客户端此更新函数被调用的秒每X量系统重复调用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

时候开始学习[WebSockets的(http://www.html5rocks.com/en/tutorials/websockets/basics/)? :) – ghoti

+0

@ghoti实际上,他想要的很可能是cronjob更新值,第二个脚本只是为了读取客户端的值。 – dbemerlin

+0

我同意,但我仍然认为,看看影响较小的解决方案,而不是有大量请求建立数据库连接的客户端会很有价值。我想另一种可能性是PHP处理程序检查db中记录的最后更新时间,并且只在比“X时间量”更早时更新。 – ghoti

回答

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作业:有关运行PHP shell脚本

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

更多信息,可以发现here。一个警告虽然...如果您直接启动脚本,他们将运行作为拥有cron作业,可能有安全(或至少是许可)影响的用户。如果您不明白这意味着什么,请在做之前提出更多问题!

如果有一个命令行PHP可用,你仍然可以有通过cron运行,由像curlwgetfetch命令行HTTP客户端获取它的PHP脚本(取决于您的操作系统)。例如:

* * * * * curl -o /dev/null http://example.com/path/to/script.php 

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

在UNIX系统上,你可以man crontab关于如何安装cron作业指令,以及可能man 5 crontab(取决于您的操作系统)的说明,对于格式设置特定的时间。请注意,cron使用1分钟的粒度。如果你想要比这更高的频率,你可以伪装它。例如,对于每分钟3次:

* * * * * /path/to/your/script.php 
* * * * * sleep 20; /path/to/your/script.php 
* * * * * sleep 40; /path/to/your/script.php 

如果你想要更小的频率,可以使用crontab's documented format。例如,平日每隔五分钟,但是每隔10分钟,周末:

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