swoole
添尹
这个作者很懒,什么都没留下…
展开
-
28.swoole协程
Swoole协程 swoole的两种命名空间形式 Swoole支持两种形式的协程命名空间一种是Swoole\Coroutine,2.2.0以上可使用Co\命名空间短命名简化类名。 性能对比 go(function(){ xxx }) 两者的效果...原创 2020-04-07 10:56:55 · 352 阅读 · 0 评论 -
27.了解协程
了解协程 进程的生命周期 阻塞 初始化->可运行->运行中->销毁 程序与进程的关系 对于电脑系统来说,我们往往会开很多个程序,而这些程序的执行会依赖于CPU来执行,其中每一个程序会有一个到多个进程;程序的执行本质就是基于进程完成的;因为CPU并...原创 2020-04-07 10:41:23 · 223 阅读 · 0 评论 -
23
Route认证校验 Route主要是针对于客户端,客户端在访问Route之后可以等到一个token,然后呢;客户端根据这个token请求服务端,也就是im-server来进行token的权限认真; 不过正常应该是请求mysql数据库,从数据库校验用户的密码和账号,只是我们这里没有连接就跳过了; Route构建login方法 因...原创 2020-04-07 10:27:11 · 104 阅读 · 0 评论 -
22
单独构建一个im服务,脱离swoostar swocloud - config - swocloud.php - bin - swocloud - src - Route.php - tests - composer.json 可运行的route服务 ...原创 2020-03-31 12:13:49 · 148 阅读 · 0 评论 -
20.IM通信
http协议特点 一次性的,非持久性的一个服务 Websocket协议的特点 持久化连接,是一种独立的,基于tcp的协议 会有一个属性upgrade在header头 基于websocket,我们可以实现客户端和服务端的双向通信。 Websocket协议的持久化连接比之前ajax轮询而建立的源源不断的ht...原创 2020-03-31 12:08:31 · 250 阅读 · 0 评论 -
十八 打造http框架的服务
打造http框架的服务 重点在于深入理解swoole技术,可以自己进行第二次开发 整体http=>mvc,websocket,rpc的客户端操作 Composer init Composer update 主要是用于加载组件 ...原创 2020-03-31 12:06:28 · 157 阅读 · 0 评论 -
网络IO 十七
打造swoole框架之http请求到响应 核心功能的引入与注意事项 1)因为像Application该对象实际上在框架中会有很地方是需要依赖于这个对象实例来完成某一些动作的,因此往往会进行单例创建,同时为了方便调用会采用助手函数的方式访问,同时考虑到其他核心功能的重复利用 与扩展,这儿我们可以引入ioc容器; 2)io...原创 2020-03-02 10:10:34 · 195 阅读 · 0 评论 -
网络IO 十六
打造http框架的服务 重点在于深入理解swoole技术,可以自己进行第二次开发 整体http=>mvc,websocket,rpc的客户端操作 Composer init Composer update 主要是用于加载组件 ...原创 2020-02-21 09:41:12 · 142 阅读 · 0 评论 -
网络IO 十八
Route解析过程 1. 获取请求的url, 根据请求方式获取路由, 3. 在根据请求地址匹配相应的路由,并返回action, 4. 判断执行的方法的类型(闭包/控制器); 5. 执行闭包 / 执行控制器 载入配置文件 1.sacndir 根据指定目录读取目录下面的文件; 2....原创 2020-02-20 13:25:59 · 187 阅读 · 0 评论 -
网络IO 十五
swoole_server中对象的4层生命周期 程序全局期 在Server->start之前就创建好的对象,我们称之为程序全局生命周期。这些变量在程序启动后就会一直存在,直到整个程序结束运行才会销毁。 有一些服务器程序可能会连续运行数月甚至数年才会关闭/重启,那么程序全局期的对象在这段时间持续驻留在内存中的。 程...原创 2020-02-18 10:58:54 · 130 阅读 · 0 评论 -
网络IO 十四
进程间通信(IPC intel-process communication) 每个进程之间都是彼此互相隔离的,为了能是不同进程之间互相访问资源,才有了进程间的通信。 系统进行进程间通信的时候,可用的方式包括:管道,命名管道 / 消息队列/ 信号,信号量 / 共享内存 / 套接字 /文件记录信息等形式。 消息队列 最...原创 2020-02-16 23:23:00 · 88 阅读 · 0 评论 -
网络IO 十三
基于swoole http与websocket打造 非传统类型的框架 Swoole -> 常驻内存 -> 变量回收 -> 变量会变得很大 Php-fpm -> web 区别在于 1.swoole http server 是常驻内存 2.httpserver 继...原创 2020-02-16 23:22:10 · 120 阅读 · 0 评论 -
swoole( 网络IO 十二)
Select count(*) from customers 数据量:2000000 Id,name,city,gender,birthdate,mobile,photo,monthsalary,yearbonus 主进程主要做什么 负责监听socket,还有没有新的连接 主...原创 2020-02-16 23:19:57 · 115 阅读 · 0 评论 -
swoole( 网络IO 十一)
Pstree -apn | grep server.php 显示父进程 子进程 信号重启产生的问题 客户端发送信息没有反应 主要是子进程通过break跳出for之后进入了monitorWorkersForLinux中阻塞了,通过修改fork方法解决 Event :: add() 非阻...原创 2020-02-12 14:19:44 · 163 阅读 · 0 评论 -
swoole( 网络IO 十)
Event诞生的原因 创建监听 Stream_server_create() 监听过程 Stream_socket_accept() 循环连接数个数太多,就会报异常 所以,event诞生 异常: 对同一资源会监控很多次(重复监听) 可以充分利用多核CPU的处理能力 s...原创 2020-02-12 12:18:39 · 121 阅读 · 0 评论 -
swoole( 网络IO 九)
超过服务最大的连接 Connection reset by peer 解决办法: 使用多进程 ulimit Php如何创建多进程 1)需要开启并支持pcntl函数 2)通过pcntl_fork创建一个子进程 Fork函数...原创 2020-02-12 12:05:32 · 119 阅读 · 0 评论 -
swoole( 网络IO 八)
Ip+端口访问 -> 内核会检测到这个数据包 -> socket的资源流就会被写在一个池子里 (里面只有一个server socket , 剩余的是其他的客户端,所以stream_select检测是否有可读之后,还需要判断下是否创建客户端连接还是发送消息) 问题: 客户端关闭了,为什么stream_se...原创 2020-02-12 11:52:54 · 121 阅读 · 0 评论 -
swoole( 网络IO 七)
Tcp三次连接,四次握手 可靠的 三次握手: 1)在吗?(SYN,同步序号,建立连接的数据包) 2)在 (确认ACK,表示接收到了) 3)好的,有个问题 四次挥手: 1)好的,OK (FIN) 2)OK 3)还有什么问题 4)没有 udp ...原创 2020-02-12 11:36:16 · 166 阅读 · 0 评论 -
swoole( 网络IO 六)
5大IO模型 1.阻塞式IO模型(blocking i/o) 用户空间一直等待内核处理,不做其他事情 老师一次只能解答一个同学的问题 1)创建套接字 server_socket 2)监听socket变化,看是否有可以使用的 stream_socket_accept 3)处理信息 4)关...原创 2020-02-11 10:13:49 · 149 阅读 · 0 评论 -
swoole( 网络IO 五)
Socket_create原生 stream_socket_server 协议+ip+端口(如:tcp://10.0.0:9000) 创建一个socket,服务会处于挂起的状态,等待连接进来。 特点会创建socket server的socket(服务端的) Stream_socket_clien...原创 2020-02-10 22:54:42 · 99 阅读 · 0 评论 -
swoole( 网络IO 四)
Swoole结构与网络io模型 Swoole结构 Ps aux | grep swoole Master(老大,老板) 这个是swoole的主进程,这个进程是用于处理swoole的核心事件,在这个进程中可以看到它拥有一个mainR...原创 2020-02-10 21:22:51 · 191 阅读 · 0 评论 -
swoole( 网络IO 三)
一次性向客户端发送一个大的数据包的时候 客户端: $client->send(str_repeat(‘xxx’,1024*1024*1)); 服务端: $serv->on(‘receive’,function($serv,$fd,$from_id,$data){ Echo ‘接收到’.$fd.’的信息’; $serv...原创 2019-12-19 16:50:18 · 107 阅读 · 0 评论 -
swoole(网络IO 一)
Swoole基础概念与长链接 同步与异步 同步: 代码的运行从上往下执行 异步: | | 阻塞与非阻塞 阻塞: 需要等待上一行代码执行完毕 非阻塞: 不需要等待执行的结果,就可以进...原创 2019-12-19 16:47:17 · 145 阅读 · 0 评论 -
swoole( 网络IO 二)
udp && tcp tcp: 不负责任,只管发送不管结果 速度快,应用场景:软件弹窗,群发,微信公众号群发,不是特别重要的场景批量发送 udp: 专业,确定相互之间的通信,才去发送信息 ngnix反向代理的理解 误区:ngnix帮我们运行php代码 ...原创 2019-12-19 16:45:55 · 125 阅读 · 0 评论 -
swoole基础理解
Swoole 版本 Centos7.6 Php7.2.2 Ngnix1.16 Mysql5.7 Swoole4.48 B/S Browser(浏览器) server(服务器) 静态页面 用户->浏览器->只会响应一次,通信只有一次 短连...原创 2019-12-19 16:42:48 · 220 阅读 · 0 评论