swoole_server中对象的4层生命周期 |
程序全局期 在 Server->start 之前就创建好的对象,我们称之为程序全局生命周期。这些变量在程序启动后就会一直存在,直到整个程序结束运行才会销毁。
有一些服务器程序可能会连续运行数月甚至数年才会关闭/重启,那么程序全局期的对象在这段时间持续驻留在内存中的。
程序全局期include/require的代码,必须在整个程序shutdown时才会释放,reload无效
进程全局期 (针对worker进程) 进程全局对象所占用的内存是在当前子进程内存堆的,并非共享内存。
对此对象的修改仅在当前Worker进程中有效 进程期include/require的文件,在reload后就会重新加载
会话期 (加了global 针对于客户端连接) 会话期是在 onConnect 后创建,或者在第一次onReceive时创建,onClose时销毁。
请求期 (只针对函数的执行) 请求期就是指一个完整的请求发来,也就是onReceive收到请求开始处理,直到返回结果发送response。
请求期对象与普通PHP程序中的对象就是一样的。请求到来时创建,请求结束后销毁。
|
swoole_server中内存管理机制 (因为swoole是常驻内存,如果变量不回收,变量就会变得越来越大)
传统的fpm,运行完之后就会关闭,并不需要关心这个问题 |
|
Swoole接收json,xml的数据 |
Http\Request->rawContent |
利用swoole加速框架 |
要值得注意的是swoole加速的是ioc类型的框架:
ioc简单来说就是一个数组 ,把我们在框架中所需要使用的数据库操作的类,redis操作对象,view视图操作类等等放置在数组中保存,根据标识做区别而已; |
Fastcgi运行模式 传统的fpm |
Php.ini配置事先加载好 加载并解析 放到内存中 执行完后销毁 |
Swoole |
会把变量一直放在内存中,处理,响应,并不会结束
主要减少了解析的时间,也不需要去销毁 |
加速的框架类型:IOC |
ioc我们也称为容器
把各种功能类 (model,controller,redis,view,route...)放在ioc容器中,而且这些功能类我们也可以看作是object
标志 :: model
|
ioc框架的生命周期 |
Public/index.php
Application/app (一般继承于container) ,这里会从容器中获取到实例对象,处理用户请求,这个过程就不会再重复地new 是worker进程全局期
初始化的方法(会把框架所用到的核心实例对象放到容器中), 是程序全局期
所谓的加速就是把 ioc(上面红色部分) 放在 swoole中 作为程序全局变量
|
网络IO 十五
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.