我在网站上有一个包含用户信息的数组和一个 Web 服务,我可以查询用户的状态(在线/离线)。我想做的是每 x 秒查询一次网站以了解每个用户的状态。
大约有 10 个用户,下面是一个数组示例。我可以根据需要更改数组。我唯一需要手动输入的是用户名和全名。我可以从服务器调用的“状态”。
$users = array
(
"username"=>array("Fullname","Status"),
"johndoe"=>array("John Doe","Online"),
"janedoe"=>array("Jane Doe","Offline")
);
这是我可以用来查询网站的网址示例(查询仅返回用户状态(在线或离线):
http://thesite.com:80/webservice/user/ 用户名/
这是我可以用来获取特定用户状态的代码:
$url = 'http://thesite.com:80/webservice/user/johndoe/';
$get = fopen($url, "r");
if ($get) {
while (!feof($get)) {
$state = fgets($get, 4096);
}
fclose($get);
}
echo "User johndoe is: ".$status;
// Output: User johndoe is: Online
现在我只需要帮助每隔 x 秒迭代一次用户和网站,并使用用户的最后一个数组字段中的每个用户状态更新数组。
请注意,下面我使用 php 和 fopen,因为这是一个跨域获取函数,我无法让 ajax/jquery 工作。我没有修改 Web 服务服务器的选项。
谢谢:)
最佳答案
您需要创建一个每 x 秒运行一次的 cronjob 脚本。该脚本应该是对此 PHP 函数的异步请求。
public function updateUsers(){
$users = $_SESSION['users'];
foreach($users as $username=>$data) {
$url = 'http://thesite.com:80/webservice/user/'.$username.'/';
$get = fopen($url, "r");
if ($get) {
while (!feof($get)) {
$status = fgets($get, 4096);
}
fclose($get);
}
$users[$username][] = $status;
}
$_SESSION['users'] = $users;
}
发布异步请求的指南。 http://petewarden.typepad.com/searchbrowser/2008/06/how-to-post-an.html
希望有帮助:)
关于PHP 迭代多维数组 - 每 x 秒查询一次 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320918/