swoole笔记

 

easyswoole的运行流程:服务启动前的准备,初始化配置参数,配置事件回调,启动服务,开启监听,接受请求,当请求进来,回调对应的监听方法,处理请求,相应请求。

启动swoole服务后运行流程(底层分析):

master进程启动,创建reactor线程用于处理tcp连接(reactor多线程做的事:连接监听socket,接受转发数据,UDP请求当worker进程处理完后不经过reactor线程,直接转发给客户端,异步非阻塞)

manager进程启动,负责管理worker进程,task进程

worker进程负责处理主要的任务(当达到max_request或者被误杀或者出现php致命错误后,自动重启worker进程,可以同步阻塞,也可以异步非阻塞)

task进程负责辅助worker进程(是同步阻塞的)

 

 

swoole对象生命周期:

程序全局(所有worker进程共享)

worker进程全局(多个请求共享)

会话(tcp连接,onConnect onClose方法创建的,一次回话如果是keep-live,会接受多个请求,这里有个坑,服务器模式如果不是固定模式时,或者说是http请求的时候,不会回调onconnect和onclose方法,所以这个回话周期的变量是不起作用的)

请求( onReceive方法回调中创建的对象,和普通php请求一样)

 

协程

目的:为了解决异步io的同步实现。

如何实现:协程为什么快,除了异步io以外,其他的一切都是内存操作,所以快。唯一的消耗是内存的消耗。

具体的细节:当遇到io操作时,底层会调用c函数将当前协程挂起,去执行其他的操作,当io结束后,底层调用c函数重新恢复,其中会保存zendvm的堆栈信息以及cpu寄存器的状态。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值