簡體   English   中英

服務器端廣播更新PHP

[英]Server Side Broadcast Update PHP

我想構建一個應用程序,當服務器上的數據更改時,該應用程序將自動向用戶廣播通知。 到目前為止,我只知道執行此操作的一種方法,即使用JQuery setInterval 使用此功能,每個客戶端都通過ajax向服務器請求數據,詢問是否有所更改。

這種方法的弱點是每個客戶端必須在每個特定的時間間隔發送一個數據包,因此我的服務器接收到巨大的數據包。 管理服務器是如此令人沮喪。 除了Jquery setInterval之外,還有其他選擇嗎?

如果Websockets不是您的選擇,則可以對服務器使用一個ajax請求。 比服務器端陷入無限循環。 使用sleep功能不會使內存過載。 比每次檢查是否有所更改。 如果是這樣,請中斷循環並返回數據。 在客戶端,立即發送下一個請求。

經過一些研究,它被稱為“ Ajax長輪詢請求”。
這是一個解釋。

PHP代碼如下所示:

$prevHash = $_GET['hash'];

while(true){
   $currHash = GetHashFromTable('myTable');
   if ($prevHash != $currRowCount) break;
   sleep(3);
}

$response[0] = GetDataFromTable('myTable');
$response[1] = GetHashFromTable('myTable');

echo json_encode($response);

更新

長輪詢不是最佳選擇。 最好使用網絡套接字。 如果要比較差異,請參見以下答案: https : //stackoverflow.com/a/10029326/3269816

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM