php長輪詢阻塞,ajax長輪詢時php被阻塞

剛接觸實時通訊這塊,知道用websocket更高效,但我想了解輪詢的實現過程,循序漸進

短輪詢用定時器setInterval已經實現了,但長輪詢時后臺進入死循環模塊導致整個網站的php網頁無響應,比如刷新頁面、提交消息都沒法進行。具體代碼如下:

chat.php:

style="width: 570px;height: 120px;margin: 5px;resize: none">

發送

chat.js:

//拉取新消息

var setting = {

type: "POST",

dataType: "html",

url: "./util/action.php?action=message_pull",

data: {uid_get: $('#chat_content').attr('uid')},//傳遞目標用戶uid

success: function (msg) {

if (msg.length > 0) {

$('.chat_content_list_table').append(msg);//追加消息列表

}

$.ajax(setting);//立即繼續請求

}

};

$.ajax(setting);

action.php中的對應函數:

function message_pull($conn)

{

session_start();

session_write_close();//關閉session鎖并沒有效果,仍被阻塞

$uid_post = $_SESSION['userinfo'][0]['id'];//發送者,即當前登錄用戶uid

$uid_get = $_POST['uid_get'];//消息目標用戶uid

$message_list = '';

//建立長連接,直到拉取到新消息后斷開連接

while (true) {

//查詢新消息

foreach (select($conn, 'message', "(uid_get=$uid_post AND uid_post=$uid_get AND read_flag<>1)") as $message) {

update($conn, 'message', 'read_flag=1', "id={$message['id']}");//每讀取一條則將其置為已讀狀態

$message_list .= "

" . $message['content'] . "" . $message['post_time'] . "";

}

if (strlen($message_list) > 0) {

echo $message_list;//輸出新消息

break;//斷開連接

}else

sleep(1);//掛起1s后繼續查詢

}

mysqli_close($conn);

}

之后測試一下,發現一旦php后臺進入while循環,就會導致被阻塞,但我看到網上很多demo都這樣寫,于是感覺很疑惑,謝謝大大們指教

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443204.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php隱藏路徑ngnix,thinkphp框架在nginx環境下去掉index.php路徑顯示

協助用戶將apache下的一個網站遷移到nginx環境中&#xff0c;結果發現用戶用的ThinkPHP框架做的開發&#xff0c;默認用的pathinfo。這是一個很頭疼的問題&#xff0c;因為nginx不支持pathinfo&#xff0c;貿然一并打開也擔心不安全。于是查詢資料后整理如下&#xff1a;找到ap…

php curl 數據采集 空,PHP curl從網站返回空數組的數據

我想寫一個PHP腳本來從www.snowbird.com/mountain-report/拉雪和其他數據通過LED陣列顯示。我在獲取需要的數據方面遇到麻煩。我似乎無法找到使其工作的方法。我能做這項工作嗎&#xff1f;還是我需要去使用另一種語言&#xff1f;PHP curl從網站返回空數組的數據以下代碼僅返回…

flux react php,Vue的Flux框架之Vuex狀態管理器

學習vue之前&#xff0c;最重要是弄懂兩個概念&#xff0c;一是“what”&#xff0c;要理解vuex是什么&#xff1b;二是“why”,要清楚為什么要用vuex。Vuex是什么&#xff1f;Vuex 類似 React 里面的 Redux 的狀態管理器&#xff0c;用來管理Vue的所有組件狀態。為什么使用Vue…

php config(),php config

PHP 的安裝由于php是一個zip文件(非install版)&#xff0c;安裝較為基本解壓就行。把解壓的 php5.2.1-Win32重命名為 php5。并復制到安裝盤目錄下。例如安裝路徑為 c:\php51 找到php目錄下的 php.ini-dist或 php.ini.recommended文件&#xff0c;重命名為 php.ini,并復制到系統…

functions.php 在哪,functions.php常用函數

在設計WordPress主題時&#xff0c;在functions.php文件里添加一套通用的自定義函數將會大大提高開發效率&#xff0c;這樣就不必每次開發主題時都需先查找然后復制同樣的函數。這里記錄一些常用的函數&#xff0c;方便以后使用&#xff01;給頭部添加feed鏈接WordPress2.8以后…

java基本數據類型存儲,JAVA - 基本數據類型的存儲空間長度

1.整型類型 存儲需求 bit數 取值范圍 備注byte 1字節 1*8 &#xff0d;128&#xff5e;127short 2字節 2*8 &#xff0d;32768&#xff5e;32767int 4字節 4*8 (-2的31次方到2的31次方-1)long 8字節 8*8 (-2的63次方到2的63次方-1) 長整型數值后綴為LJAVA 沒有無符號類型JAVA中…

matlab回調函數,matlabGUI回調函數介紹.pptx

matlabGUI回調函數介紹GUI開發環境的常用工具與回調函數和GUI程序文件GUI開發常用工具1、控件面板2、對象對齊工具3、對象瀏覽器4、tab順序編輯器5、屬性編輯器6、菜單編輯器7、M文件編輯器回調函數回調函數是控件接收到用戶的操作時調用的特定函數&#xff0c;每個回調函數都是…

余額交易查詢 php,深圳通余額查詢的API

深圳通余額查詢的API&#xff0c;可以通過深圳通號碼查詢到余額及卡有效期等信息。 用到Domxpath和Curl兩方面的知識。 源碼已托管到github&#xff0c;另外要加載個類&#xff1a;myclass 項目地址&#xff1a;https://github.com/skiy/dev 演示&#xff1a;http://api.oupag.…

食餌捕食者模matlab,幾類食餌-捕食者模型的定性分析和數值模擬

摘要&#xff1a;生態問題一直是人們普遍關注的問題,特別是生態問題中的食餌-捕食者模型,則處于舉足輕重的位置。如何更有效的控制、調節生物種群,使之保持良性發展,則具有非常重要的生態意義和應用價值。解決這類問題的主要工具是種群動力學模型,解決的依據是數學的理論和方法…

數組填充php,php數組入門教程之數組填充

本文介紹下&#xff0c;有關php數組之數組填充的一個例子&#xff0c;有需要的朋友參考下。在php編程中&#xff0c;對數組元素進行填充&#xff0c;可以使用array_fill()函數。來看下面的例子&#xff0c;array_fill()函數——填充數組函數&#xff1a;";print_r ($array…

php在類定義一個我靜態變量,php中靜態類與靜態變量用法的區別分析_PHP教程

php中靜態類與靜態變量用法的區別分析static是定義一個靜態對象或靜態變量,關于static 定義的變量或類方法有什么特性我們看完本文章的相關實例后就見分曉了.1. 創建對象$object new Class()&#xff0c;然后使用”->”調用&#xff1a;$object->attribute/function&…

matlab 排序點,matlab如何進行排序?

來自SORT的MATLAB文檔&#xff1a;If A has complex entries r and s,sort orders them according to thefollowing rule: r appears before s insort(A) if either of the followinghold:abs(r) < abs(s)abs(r) abs(s) and angle(r) < angle(s)換言之&#xff0c;具有復…

matlab不同調制方式下性能比較,用不同調制方式實現跳/擴頻混合通信的抗干擾性能...

論文寫作指導&#xff1a;請加QQ229366758摘要&#xff1a;介紹了BPSK&#xff0c;QPSK&#xff0c;16PSK&#xff0c;FSK&#xff0c;MSK及GMSK 6種數字調制方式的特點&#xff0c;采用Matlab中的Simulink建立了各種調制方式實現DS/FH混合擴頻系統的仿真模型。重點研究了跳/擴…

matlab cd參數,MATLAB變量參數列表?

默認值default value對于用戶沒有傳遞參數值時給函數進行自動賦給該參數的值?比如上述的例子中&#xff0c;阻尼系數&#xff0c;用戶通常不清楚&#xff0c;可以由系統給出更為合適。怎么做到呢&#xff1f;?可以結合MATLAB的一個函數nargin&#xff0c;它能給出函數輸入參數…

java 旋轉方向,Java 2d方向鼠標點旋轉

使用Graphics2D旋轉方法確實是最簡單的方法.這是一個簡單的實現&#xff1a;int centerX width / 2;int centerY height / 2;double angle Math.atan2(centerY - mouseY, centerX - mouseX) - Math.PI / 2;((Graphics2D)g).rotate(angle, centerX, centerY);g.fillRect(...)…

基于matlab 的燃油噴霧圖像處理方法,基于MATLAB的燃油噴霧圖像處理方法.doc

基于MATLAB的燃油噴霧圖像處理方法基于MATLAB的燃油噴霧圖像處理方法摘要:提出了基于MATLAB的燃油噴霧圖像處理方法。通過對噴霧圖像的采集, 分割和濾波處理, 將多幅圖像轉換融合為一幅比較清楚的二值圖像, 對拍攝的噴霧圖像進行了去噪及二值化等初步處理, 并提取其輪廓圖, 求取…

matlab聲音信號時域頻域轉換,關于處理用采集卡采集到的聲音時域信號轉化成頻域信號........

求助各位大神&#xff0c;我用麥克風通過采集卡采集到了一段聲音數據&#xff0c;數據在附件里&#xff0c;矩陣中第一列為時間&#xff0c;第二列為采集到的聲音的電壓信號&#xff0c;采樣頻率為1萬Hz&#xff0c;做出時域圖和頻域圖的程序如下所示&#xff1a;clear;clc;loa…

win7和mysql亂碼,windows本地mysql數據庫存入中文亂碼

windows本地mysql數據庫存入中文亂碼作者:PHPYuan 時間:2018-07-23 03:41:20出現的問題&#xff1a; 我這頁面存中文到數據庫會亂碼 我打了斷點 中文是傳到后臺dao層的 然后我試了下 把我本地項目連服務器數據庫 保存不會亂碼 我就懷疑是本地數據庫有問題 然后我用navicat寫了個…

畢業設計matlab在誤差處理中的應用,畢業設計MATLAB在誤差處理中的應用要點分析.doc...

畢業論文任務書院(系) 機械工程學院 專業班級 測控082級 學生姓名 馬 魁一、畢業論文題目 MATLAB在誤差理論中的應用二、畢業論文工作自______ ___年____ _月___ __日 起至____ _____年 月_____日止三、畢業論文進行地點: 陜西理工學院四、畢業論文內容要求&#xff1a;傳統的數…

帝國cms 未審核 showinfo.php,帝國CMS批量修改文章未審核狀態及批量修改上線時間...

帝國CMS批量修改審核文章未審核狀態&#xff0c;批量自定義指定文件上線時間&#xff01;用法&#xff1a;后臺增加自定義頁面 PHP CODE:$infouptimeto_time(2016-06-12 10:50:19); //上線時間$sql$empire->query("select * from {$dbtbpre}ecms_".$class_r[2][…