扫码关注官方订阅号
消息都需要服务器返回我目前用的是thinkphp开发,前台用户发起一个请求,服务器处理了请求,返回一个A消息,然后服务器接着处理,然后返回B消息
我现在用的是$this->ajaxReturn($info) 这个thinkphp自带方法,但是返回了以后,就无法执行接下去的操作,怎么破?
这个因为 这次链接已经结束了 所以返回不了B 你可以做一个长链接 或者 每次间隔多久 去服务器请求一次数据
前台做检测,收到第一次的响应之后,就重新请求第二次的结果,或者websocket。
一个请求肯定是不行的。HTTP协议就是一个request一个response,不可能一个请求多个响应的。如果有多个响应, 可能是用ajax进行了多个请求
可以搜一下 swoole或workerman
ajaxReturn这个方法里用了exit终止函数,所以不会执行后来的程序。
ajaxReturn
exit
这个服务端好像无法做到,除非是前端一个请求对应返回一个结果,然后拿到这个结果再去请求。后端如果无法入手,就从前端入手吧。只要达到的目的是一样的,手段就无所谓了。
服务器发送事件
如果只是简单的应用的话, 可以用到 HTML5 的 EventSource,具体的细节看文档吧,我贴个demo代码
#JS代码 var evtSource = new EventSource("test.php"); evtSource.onmessage = function(e) { console.log("message: " + e.data + "--" + e.type;) }; evtSource.addEventListener("death", function (e) { this.close(); });
#php端代码 header("Content-Type: text/event-stream\n\n"); $death = 5; while (1) { echo 'data: This is a message at time ' . $curDate . "\n\n"; $death--; if($death == 0){ echo "event: death\n"; echo "data: end\n\n"; } ob_flush(); flush(); sleep(1); }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这个因为 这次链接已经结束了 所以返回不了B 你可以做一个长链接
或者 每次间隔多久 去服务器请求一次数据
前台做检测,收到第一次的响应之后,就重新请求第二次的结果,或者websocket。
一个请求肯定是不行的。HTTP协议就是一个request一个response,不可能一个请求多个响应的。
如果有多个响应, 可能是用ajax进行了多个请求
可以搜一下 swoole或workerman
ajaxReturn这个方法里用了exit终止函数,所以不会执行后来的程序。这个服务端好像无法做到,除非是前端一个请求对应返回一个结果,然后拿到这个结果再去请求。后端如果无法入手,就从前端入手吧。只要达到的目的是一样的,手段就无所谓了。
服务器发送事件
如果只是简单的应用的话, 可以用到 HTML5 的 EventSource,具体的细节看文档吧,我贴个demo代码