如何在PHP中实现长轮询

avatar
作者
筋斗云
阅读量:0

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

  1. 创建一个PHP文件,例如long_polling.php,并设置一个适当的超时时间:
<?php // 设置脚本超时时间(单位:秒) ini_set('max_execution_time', 30); 
  1. 定义一个函数来获取新数据。这里我们使用一个简单的示例,从文本文件中读取数据:
function getNewData() {     // 从文件中读取数据     $data = file_get_contents('data.txt');          // 返回数据     return $data; } 
  1. 使用一个循环来等待新数据。在循环中,我们将检查是否有新数据可用。如果没有新数据,我们将继续等待。如果有新数据,我们将将其发送回客户端并退出循环。
$data = null; while (true) {     // 获取新数据     $newData = getNewData();          // 检查是否有新数据     if ($newData !== $data) {         // 更新数据         $data = $newData;                  // 将新数据发送回客户端         echo $data;         break;     } else {         // 没有新数据,等待一段时间后再次尝试         sleep(1);     } } 
  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> 

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!