PHP 迭代多维数组 - 每 x 秒查询一次 Web 服务

标签 php multidimensional-array iteration

我在网站上有一个包含用户信息的数组和一个 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/

相关文章:

php - 如何在 Laravel 5 中获取复选框数组的值?

打开多个窗口选项卡时的 php session 问题

c# - 在 C# 中将一维数组转换为二维数组以获取 AES 数据矩阵

java - 多维零数组

javascript - Vanilla JavaScript:如何搜索对象数组,键是数组

python - 运行时警告: overflow encountered in exp

javascript - 如何将数组项一个一个地添加到 DOM 中?

php - 使用不同字段查找多个用户名时出现 MySQL 多重连接问题

python - 简化 Python 中的表达式

php - setcookie() 不在谷歌浏览器中设置 cookie