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长轮询

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • spring项目无法引入@Resource注解问题[通俗易懂]

    spring项目无法引入@Resource注解问题[通俗易懂]问题:在spring项目中引入@Resource注解的时候,有红色下划线错误,而且输入注解的时候不能出现自动代码补全。解决办法:Spring项目中缺少javax.annotation包的依赖。在maven配置文件pom.xml中加入依赖。<!– https://mvnrepository.com/artifact/javax.annotation/javax.annotation…

  • Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!

    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!SpringCloudGreenwich正式版在01/23/2019这天正式发布了,下面我们来看下有哪些更新内容。生命周期终止提醒SpringCloudEdgwareEdgware版本将于08/01/2019正式退役,具体可以参考官方宣布:https://spring.io/blog/2018/07/30/spring-cloud-edgware-eol-aug…

    2022年10月24日
  • 风讯.NET与NETCMS的选择—开源.NET内容管理系统

    风讯.NET与NETCMS的选择—开源.NET内容管理系统最近想要学习做一个网站,本来在某公司实习的时候,boss就要求快速的建立一个非盈利性的门户站点,当时用的是动易的SiteFactory3.0版本,感觉用起来也是很不错的,尤其是后台的可视化编缉做得是相当的到位,内容的采集部分也是很好使,初学者只要是不太笨的基本上就可以快速建立起一个功能比较好的站点了,不过令人没想到的是,建立好站点好以后才真的是恶梦的开始,boss提出要求,对它进行二次的开发,基…

  • TransactionScope事务级别

    TransactionScope事务级别在TransactionScope中默认的事务级别是Serializable,即在事务过程中,完全性锁表。别的进程不能查询,修改,新增,删除。这样会导致效率大大降低,虽然数据完整性很高。通常我们不需要那么高的数据完整性。所以需要修改默认的事务级别 所有的事务级别如下Chaos无法改写隔离级别更高的事务中的挂起的更改。ReadCommitted不可以在事务期间读取可变

  • Pytest(15)pytest分布式执行用例「建议收藏」

    Pytest(15)pytest分布式执行用例「建议收藏」前言平常我们功能测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟,如果单个测试人员执行需要1000分钟才能跑完当项目非常紧急时,会需要协调多个测试资源来把任务分成两部分,于是执行时间

  • python生成exe文件运行闪退解决方法

    python生成exe文件运行闪退解决方法**python生成exe文件运行闪退解决方法:**用python写了一个程序,在python下运行是正常的,但是生成exe文件后运行闪退我当时怀疑是不是脱离的python解释器就运行不了的问题,网上找了一通也没有解决。1.可能是程序运行结束,窗口自然就默默离开了。那么在源程序中加入用户输入字符后结束程序。input(“输入任意字符结束“)这样的。2.你编译成.exe的python程序…

发表回复

您的电子邮箱地址不会被公开。

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