mysql长轮询_ajax的轮询和长轮询

mysql长轮询_ajax的轮询和长轮询概念:轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。概念总是枯燥的,只有代码方能解心头之快前段代码:index.html:vargetting={url:’server.php’,dataType:’json’,success:function(res){console.log(res);}};//关键在这里,Ajax定时…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

概念:

轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。

概念总是枯燥的,只有代码方能解心头之快

前段代码:index.html:

var getting = {

url:’server.php’,

dataType:’json’,

success:function(res) {

console.log(res);

}

};

//关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。

window.setInterval(function(){$.ajax(getting)},1000);

服务端PHP代码:server.php

$conn = mysqli_connect(“localhost”,”root”,””,”test”);

$resource = $conn ->query(‘select * from t’);

$result = $resource->fetchall();

if ($result) {

//exits data

print_r(json_encode(array(‘success’=>’存在数据’)));

}

print_r(json_encode(array(‘failed’=>’不存在数据’)));

$conn.close

?>

上面就是最基本最简化的Ajax轮询。判断t表是否有数据,并执行对应输出。 实际项目中的话查询语句就根据实际需求来定就可以了。

从代码我们可以看出,客户端是按照规定时间(这个时间由你设定,此处默认为1秒)像服务端发送请求,前一次请求完成后,无论有无结果返回,一秒之后下一次请求又会发出。这就叫做Ajax轮询。

最关键的地方在于,客户端需要通过JS设定一个定时器,按照规定时间不断的请求。

好,轮询完了,我们来看一下长轮询

Ajax长轮询属于Ajax轮询的升级版,在客户端和服务端都进行了一些改造,使得消耗更低,速度更快。

“不间断的通过Ajax查询服务端”。

同样看代码说话:

前端代码:

//前端Ajax持续调用服务端,称为Ajax轮询技术

var getting = {

url:’server.php’,

dataType:’json’,

success:function(res) {

console.log(res);

$.ajax(getting); //关键在这里,回调函数内再次请求Ajax

}

//当请求时间过长(默认为60秒),就再次调用ajax长轮询

error:function(res){

$.ajax($getting);

}

};

$.ajax(getting);

服务端代码:

//这段AJAX请求时间永不过期

set_time_limit(0);

$pdo = new PDO(‘mysql:dbname=test;host=127.0.0.1′,’root’,’root’);

$resource = $pdo->query(‘select * from t1’);

$result = $resource->fetchall();

while (true) {

if ($result) {

//exits data

print_r(json_encode(array(‘success’=>’存在数据,返回’)));

exit(); //输出数据,退出。然后客户端不间断继续发起请求

}

//数据不存在,继续循环。

}

?>

长轮询的精髓就在于Ajax的回调函数,继续再次调用Ajax请求(不间断的原理就在这里,成功返回后立即再次调用):

$.ajax(getting);

类似于js里面的递归,在函数里面调用函数;

最关键的地方在于前一次请求结束后,第二次请求立即不间断的发起,这个就叫做Ajax长轮询

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184177.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 控制台输入,输出语句

    Java 控制台输入,输出语句输入:Scannerscan=newScanner(System.in);Stringread=scan.nextLine();System.out.println(read);输出:System.out.println(“普通信息”);System.err.println(“错误信息”);

    2022年7月8日
  • 使用 Python 程序实现摩斯密码翻译器「建议收藏」

    作者主页:海拥作者简介:CSDN全栈领域优质创作者、HDZ核心组成员、蝉联C站周榜前十粉丝福利:往期获奖记录每周送6~9本书,不定期送各种小礼品(搪瓷杯、抱枕、鼠标垫、马克杯等)摩斯密码是一种将文本信息作为一系列通断的音调、灯光或咔嗒声传输的方法,无需特殊设备,熟记的小伙伴即可直接翻译。它以电报发明者SamuelF.B.Morse的名字命名。算法算法非常简单。英语中的每个字符都被一系列“点”和“破折号”代替,或者有时只是单数的“点”或“

    2022年4月14日
  • ArrayList 扩容详解,扩容原理[通俗易懂]

    ArrayList 扩容详解,扩容原理[通俗易懂]ArrayList扩容详解,扩容原理ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。ArrayList不是线程安全的,只能用在单线程环境下。实现了Serializable接口,因此它支持序列化,能够通过序列化传输;实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问;实现了Cloneable接口,能被克隆。动态扩容一初始化…

    2022年6月12日
  • Python语言培训_python文件是怎么打开

    Python语言培训_python文件是怎么打开述(最多18字以下试题内容来源由-众课帮-公众号和小程序提供可查询更多的试题答案新鲜尿液有氨臭味变异性心绞痛患者首选药物是A_______ofdependenceonGMOseedsandchemicalfertilizers,pesticides(杀虫剂),andherbicides(除草剂)isthencreatedinordertogrowasinglecrop.如果要对事物发展变化的未来趋势做出描述,例如对五年后技术变革方向进行预测,通常采..

    2022年9月3日
  • 适配器的作用[通俗易懂]

    适配器的作用[通俗易懂]首先我们从一般的概念上讨论一下计算机是怎样连接到局域网上的。计算机与外界局域网的连接是通过通信适配器(adapter)。适配器本来是在主机箱内插入的一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡)。这种接口板又称为网络接口NIC(NetworkInterfaceCard)或简称为“网卡”。由于较新的计算机主板上已经嵌入了这种适配器,不使用单独的网卡了,因此…

    2022年6月12日
  • UPX压缩脱壳「建议收藏」

    UPX压缩脱壳「建议收藏」该方法可针对upx变种,但AndroidLinker的时候不需要section表,所以我们不能修复section表进行SO层代码脱壳1.使用IDA打开libexec.so,在导出函数中找到.init_proc函数(0x39A79),搜索特征码7D2700DF搜索到下面语句2.自己编译一个load程序,然后ida附加.刚好到死跳转处,注意…

    2022年7月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号