热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php的swoole扩展中onclose和onconnect接口不被调用的问题,swooleonclose_PHP教程

php的swoole扩展中onclose和onconnect接口不被调用的问题,swooleonclose_PHP教程:php的swoole扩展中onclose和onconnect

php的swoole扩展中onclose和onconnect接口不被调用的问题,swooleonclose


  在用swoole扩展写在线聊天例子的时候遇到一个问题,查了不少资料,现在记录于此。

  通过看swoole_server的接口文档,回调注册接口on中倒是有明确的注释:

* swoole_server->on & swoole_http_server->on are the same except swoole_http_server : * - not accepting onConnect/onReceive callback accept events onRequest

swoole_http_server和swoole_server大体是相同的,但是swoole_http_server中是不调用connect和receive接口的,相对应调用request接口。

  在聊天的小例子中用的是swoole_websocket_server,通过测试在swoole_websocket_server中receive接口也是没有被调用的,但是作为长连接服务,worker中

close和connect中的回调还是有必要的。比如上线广播通知,下线广播通知,都是需要回调这两个对应的接口才能很好的实现。所以官方肯定是支持回调的。

  最后找到问题是通过一份swoole版本更新公告。

  swoole-1.7.16 版本已发布,BUG 修复版本:

增加swoole_server->tick和swoole_timer_tick函数
增加http服务器对gzip压缩的支持
增加swoole_table->incr/decr原子自增/自减方法
增加open_eof_split配置,使用EOF检测可以支持自动分包
增加server统计项request_count和worker_request_count
增加server的连接迭代器,可以使用foreach遍历服务器的所有连接
增加http服务器请求的query_string
增加http服务器multipart-form和上传文件的支持
修复onReceive数据合并失效的BUG
修复swoole_server->addtimer与tick定时器冲突的BUG
修复低版本Linux下Accept未设置阻塞的问题
修复Accept失败返回Too Many Connection重复打印日志的问题
修复task_max_request参数失效的问题
修复swoole_client的waitall参数失效问题
修复swoole_table发生死循环的BUG
WebSocket服务器onOpen回调函数第2个参数由$fd调整为$request对象
Http服务器允许发送空body的response
禁用swoole_websocket_server->send方法
BASE模式支持向任意FD发送数据
设置dispatch_mode = 1, 3 后关闭onClose/onConnect事件回调
允许Worker进程内设置非系统保留信号
移除swoole底层对对象资源属性的依赖,直接读取指针,提升性能
解决心跳线程无法强制杀掉遗留连接的问题
优化dispatch_mode=3模式,提升任务分配的效率

是worker分配模式的问题。在抢占模式和轮询模式,这两个回调接口不在被调用。固定模式,每个客户端的数据包都会由固定的worker进程处理,这样就可以在worker进程中存放一些属于这个客户端的私有信息,缓存一部分读写频繁的数据,就和erlang中的进程词典类似的操作。这样客户端在下线时,要做一些清理操作。上线初始化操作。所以这个模式是很有意义,也是很有必要的。固定模式适合处理每个客户端逻辑相对均匀的情况。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1094275.htmlTechArticlephp的swoole扩展中onclose和onconnect接口不被调用的问题,swooleonclose 在用swoole扩展写在线聊天例子的时候遇到一个问题,查了不少资料,现在记...


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • ➜~tarzxfsuperset-0.18.2.tar.gzgzip:stdin:notingzipformattar:Childreturnedstatu ... [详细]
  • vlfilecopy(findfile(vllist>string(10811110311146103105102)))(vll的简单介绍
    本文目录一览:1、一段lisp代码求解释2、运 ... [详细]
  • 作为一个扩展,你需要了解DotNetZip用法,请参见:C#.NET使用第三方类库DotNetZip解压压缩Zip文件你也需要了解单文件内嵌入资源文件基本方法,参见:WPF调用嵌入 ... [详细]
  • 为了让用户体验更好,页面前端往往是通过ajax来进行数据处理;由于浏览器的设计原因每个域名下的连接有 ... [详细]
  • 把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统
    原文转载自「刘悦的技术博客」https:v3u.cna_id_202“表达欲”是人类成长史上的强大“源动力”,恩格斯早就直截了当地指出,处在蒙昧时代即 ... [详细]
  • 开发中,EXT封装的.NET控件,使用了ExtJsExtenderControl的开源控件,发现个问题,就是每次控件加载,都需要调EXT_ALL.JS文件,600K,导致页面加载很慢。想对这个问题进行 ... [详细]
  • Linux操作系统回炉复习各种常用命令集合解析
    Linux操作系统回炉复习各种常用命令集合解析猿码互联猿码互联今天Linux终端命令格式目标了解终端命令格式知道如何查阅终端命令帮助信息01.终端命令格式command[ ... [详细]
author-avatar
阳光下微醺的我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有