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.mzph.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][…