如何在PHP中实现长轮询

   2024-09-30 8900
核心提示:长轮询(Long Polling)是一种服务器推送技术,允许服务器在有新数据可用时主动推送给客户端创建一个PHP文件,例如long_polling.

长轮询(Long Polling)是一种服务器推送技术,允许服务器在有新数据可用时主动推送给客户端

创建一个PHP文件,例如long_polling.php,并设置一个适当的超时时间:
<?php// 设置脚本超时时间(单位:秒)ini_set('max_execution_time', 30);
定义一个函数来获取新数据。这里我们使用一个简单的示例,从文本文件中读取数据:
function getNewData() {    // 从文件中读取数据    $data = file_get_contents('data.txt');        // 返回数据    return $data;}
使用一个循环来等待新数据。在循环中,我们将检查是否有新数据可用。如果没有新数据,我们将继续等待。如果有新数据,我们将将其发送回客户端并退出循环。
$data = null;while (true) {    // 获取新数据    $newData = getNewData();        // 检查是否有新数据    if ($newData !== $data) {        // 更新数据        $data = $newData;                // 将新数据发送回客户端        echo $data;        break;    } else {        // 没有新数据,等待一段时间后再次尝试        sleep(1);    }}
在HTML文件中,使用JavaScript创建一个XMLHttpRequest对象来请求long_polling.php:
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">   <title>Long Polling Example</title>   <script>        function longPolling() {            var xhr = new XMLHttpRequest();            xhr.onreadystatechange = function() {                if (xhr.readyState == 4 && xhr.status == 200) {                    // 处理服务器返回的数据                    console.log("Received data: " + xhr.responseText);                                        // 继续进行长轮询                    longPolling();                }            };            xhr.open("GET", "long_polling.php", true);            xhr.send();        }                // 开始长轮询        window.onload = longPolling;    </script></head><body>    <h1>Long Polling Example</h1></body></html>

现在,当有新数据可用时,服务器将主动推送给客户端。客户端将持续请求新数据,直到服务器关闭连接或发生错误。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号