
swoole
yt_php
感谢开源,愿贡献一点点代码,欢迎私信交流。
展开
-
swoole编译安装
进入swoole官网安装文档https://wiki.swoole.com/wiki/page/6.html环境要求安装前必须保证系统已经安装了下列软件php-7.0 或更高版本gcc-4.8 或更高版本makeautoconfpcre (CentOS系统可以执行命令:yum install pcre-devel检测的命令分别为PHP > 7.0[root@VM_0_...原创 2020-02-08 22:25:05 · 337 阅读 · 0 评论 -
swoole-了解swoole
什么是swooleswoole是php的异步、并行、高性能网络通信引擎。使用纯C/c++语言编写,提供了php语言的异步多线程服务器。swoole内置了http/websocket服务器端/客户端、http2.0服务器端。异步tcp/udp网络客户端,异步mysql,异步redis数据库连接池,asynctask,稍息队列,毫秒定时,异步文件读写,异步DNS查询。推荐书籍入门书籍:《tc...原创 2019-03-28 12:59:51 · 998 阅读 · 0 评论 -
2019-4-5 模仿swoole封装单进程阻塞http_server
早晨起来模仿swoole的形式封装一个简单的http_server,有点粗陋,在这基础上慢慢完善吧。准备好一个request类和一个response类:<?phpclass Request{ public $header=array(); public $server=array(); public $request=array(); public $...原创 2019-04-05 11:26:51 · 468 阅读 · 0 评论 -
2019-4-5 升级单进程阻塞为单进程非阻塞
理论先行在之前的http_server进行改进,区别在于:1代accept()系列函数阻塞执行,处理每个连接请求后需close()掉连接,才能处理下一次连接。好比客服妹子只有一台电话机,电话未挂断,无法再接听电话。2代socket函数非阻塞模式stream_set_blocking(sock,0),好比一个号码有多台电话机,一个电话通话中,其他电话响起也可以接听。那么开启非阻塞后,切身...原创 2019-04-05 23:17:49 · 479 阅读 · 0 评论 -
2019-4-7升级单进程非阻塞为多进程非阻塞
升级第2代,区别在于:放弃select方式,采用epoll。epoll应用在nginx等软件,成为高并发优秀软件的基础。epoll无需轮询,也无需在用户空间和内核之间切换,属于事件通知。好比后台系统采用先进的监听方式,并能快速的通知客服处理哪个。这里用的是swoole的event,基于epoll。多进程,一个客服处理速度是有限的,那么就两个或者多个客服一同处理,后台会平均分配任务给客服。而多进...原创 2019-04-07 05:04:26 · 283 阅读 · 0 评论 -
2019-4-9 浅谈重启worker和worker意外退出重新拉起
swoole中server->reload重启所有worker。当某个worker意外退出时,为了维持worker的数量会自动拉起一个新worker。基于信号,模拟如何实现。当然无法做到workman复杂的信号处理。看看就好,无需深究。注册信号:pcntl_signal(信号,触发信号时的处理函数,FALSE);信号分发:pcntl_signal_dispatch(); 非阻塞!。...原创 2019-04-10 15:48:07 · 2412 阅读 · 0 评论 -
swoole-面向连接(tcp)的心跳检测和合包分包
分析为什么要心跳检测和处理粘包以下讲的是tcp连接,client和server是tcp协议不再强调。心跳检测tcp连接中,client连接server后,server端的socket_accept()函数返回一个文件描述符fd(file description),在window中叫socket句柄,代表一个客户端连接。$fd = socket_accept(resource $sock...原创 2019-04-01 17:42:54 · 1624 阅读 · 0 评论 -
swoole - 面向连接(tcp)的输出缓冲区
缓冲区的作用下面是我个人总结的几种作用,希望对你理解记忆有帮助。提升效率:批量发送、批量读取(数据量较小轻松应对)拥塞机制:发送之前询问接收方是否处理有压力,发多少数据合适。(正常运行)IO差异: 快速输出但网络延迟,快速输入但读取延迟 (数据量偏大可以应对)预警:通过对缓冲区大小的控制,防止爆满内存(数据量超大困难应对)预警此篇重点讨论服务端和客户端两个参数,这两个参数个...原创 2019-04-04 05:06:34 · 1240 阅读 · 0 评论 -
2019-5-18 swoole消息队列
queue1跨进程(不需要亲缘关系、可不是父子进程)2跨语言(php和C通讯)3不是共享内存,而是消息传递。数据获取后消失。4msg_send、msg_receive(默认阻塞也可不阻塞)5特点:快。局限性:单机6swoole的task进程允许其他程序投递,c语言或传统fpm投递到task。https://wiki.swoole.com/wiki/page/212.htmlswool...原创 2019-05-19 22:58:37 · 817 阅读 · 0 评论