swoole( 网络IO 三)

本文探讨了网络通信中的一次性大数据包传输问题,包括客户端和服务端的交互过程,粘包现象及其解决方案,如使用分隔符和数据包长度标识。此外,还介绍了网络IO模型、进程、线程及协程的概念,分析了它们在处理网络通信中的作用和区别。

一次性向客户端发送一个大的数据包的时候

客户端:

$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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值