swoole 概念总结

swoole概念:swoole是异步并行高性能网络通信引擎,使用纯C编写,提供了PHP语言的异步多线程服务器,实现了异步TCP/UDP网络客户端,异步mysql,异步redis,数据库连接池,asyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询,swoole内置了Http/WebSocket服务器端/客户端/Http2.0服务器端。

什么是进程:所谓进程其实就是操作系统中一个正在运行的程序,我们在一个终端当中,通过运行PHP文件,这个时候就创建了一个进程

自动填充$HTTP_RAW_POST_DATA是不推荐的,将在将来的版本中删除。为了避免这个警告,在php.ini中将'always_populate_raw_post_data'设置为'-1',并使用php://输入流。在未知的第0行

熔断:熔断技术可以说是一种“智能化的容错”,当调用满足失败次数,失败比例就会触发熔断器打开,有程序自动哦切断当前的RPC调用,来防止错误进一步扩大。

实现一个熔断器主要是考虑两种模式  关闭   打开  半开

容错:当系统在运行时有错误被激活的情况下仍能保证不间断提供服务的技术和方法  

容错就是允许犯错但是

第一章

共享内存:

共享内存不属于任何一个内存

共享内存分配的内存空间可以被任何进程访问

进程关闭 共享内存仍然可以存在

ipcs -m  查看共享内存段

fpm  多进程解析器 系统用于创建和销毁进程导致响应效率不高

swoole结构:

swoole  分为三层

Master  R

manager 不做任何业务逻辑仅仅只做进程的管理

worker   是swoole的主逻辑进程用来处理客户端的请求

Task     异步逻辑进程  用来处理耗时较长的同步任务

         进程与进程之间的联系是通过管道联系的

 

Task传递数据的大小:数据<8k直接写入管道传递;数据>8k;写入临时文件传递

Task传递对象:可以通过序列化传递一个对象的拷贝

Task中对对象的改变不会反应到worker进程中

数据库连接,网络连接对象不可传递    

 

Task的回调问题

task的onFinish回调 会 回调给调用task的worker进程  保持数据一致性

 

Timer:

基于epoll的 timeout 机制实现  

使用堆存放timer  提高检索效率    // 自行了解

swoole_timer_tick()  无限使用

swoole_timer_after() 只运行一次

 

timer 传递参数

可以通过tick方法的第三参数传递 使用use闭包传递参数

onTimer是在调用tick方法的进程中回调 因此可以直接使用在Worker进程重声明的对象(局部变量无法访问)

swoole_timer_clear($timer_id)

 

swoole_crontab

原理:使用tick方法,没一秒检查一次crontab任务表,如果发现有需要执行的任务,就通知worker进程处理任务

步骤:解析crontab配置文件(swoole_crontab),并存入DB  

在tick的回调中检查所有的crontab任务,找到满足当前时序的任务  并执行

 

第二章

子进程会复制父进程的IO句柄

进程间的通信方式  管道

管道是一组2个特殊的描述符

管道需在fork函数调用前创建

如果某一端主动关闭管道 另一端的读取操作会直接返回0

 

进程通信方式===消息队列

 

独立于两个进程之外

通过指定key创建一个消息队列

在消息队列中传递的数据有大小限制

消息队列会一直保留直到被主动关闭(进程关闭 消息队列 不会消失 除非进程主动关闭它)

IO多路复用

 

Epoll函数会监听注册在自己名下的所有的socket描述符

当有socket感兴趣的时间发生时epoll函数才会响应,并返回有时间发生的socket集合

Epoll的本质是阻塞IO,他的优点在于能同时处理大量的socket链接

 

Event_loop 简介

event_loop是一个reactor线程 其中运行了一个epoll实例

可通过接口添加socket描述符到epoll监听中并指定时间响应的回调函数

Event_loop不可用于FPM环境下

退出事件轮询,此函数仅在Client程序中有效。

void swoole_event_exit(void)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值