一次性向客户端发送一个大的数据包的时候 |
客户端: $client->send(str_repeat(‘xxx’,1024*1024*1)); 服务端: $serv->on(‘receive’,function($serv,$fd,$from_id,$data){ Echo ‘接收到’.$fd.’的信息’; $serv->send($fd,”server:”.$data); }) |
粘包解决 |
1)延迟发送不是最佳答案 2)分隔符 A)特殊字符 B)swoole的EOF方式处理(资源消耗)
C)因为每次传送到服务端的数据的长度是固定的,可以根据数据的长度做一个区分 (pack 数据长度)+ 实际的数据 |
比较大的包,连接的时候,有时会断开 |
1)重连机制 2)数据校验-确认机制
|
|
|
网络IO模型 |
|
进程 |
好比系统中运行的程序 php index.php
父进程:管理 子进程:工作
代码+数据+内核空间(类似于swoole官网)
|
线程 |
也会称为轻量级的进程,是程序执流中最小的单位
就是任务,例如一个项目中的商品详情,购物车
一个进程可以有多个线程(进程消耗大,所以出现了线程)
每一个连接就是一个线程
|
多进程 |
|
协程 |
比线程小,一个线程可以有多个协程 |
图解(进程,线程,协程) |
进程(公司) 线程(上班正常的) 协程(上班过程中去个厕所也可以做事情)
初始化 -> 可运行 -> 运行中 -> 结束
1)涉及到锁 2)涉及到线程阻塞和运行之间的切换
阻塞:同时点击很多线程(任务) 会造成阻塞 不断转圈圈
协程 多个房间 VIP |
swoole( 网络IO 三)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.