1. 只有控制器 和 启动脚本中 载入的文件(比如,process,composer包),才是常驻内存的 我们自己写的业务代码,比如,在某个方法里,直接 new 的,这种都不是常驻内存的吧 因为遵循PHP垃圾回收机制
2. 如果仅仅只比较业务代码,是不是跟fpm中,性能差不多的呢?
public function xxx(){ 全部变量到}执行完毕回收, }
据我个人看法,常驻内存确实会比fpm快,但是真正是在于epoll 事件回调 才是性能大幅度提升的关键。 https://www.workerman.net/a/1328
如果业务上有使用数据库,也不需要每次都tcp连接,(其实就是fpm下的opencache)
只谈http应用的话,fpm一样支持epoll(fpm配置项events.mechanism = epoll),多路复用技术是用在套接字连接上的,workerman本质上就是一个fpm,workerman相比fpm代码常驻内存,少了各种初始化编译过程,再就是因为代码常驻内存,全局和静态变量持久保存,可以复用数据类的连接。(以上纯属个人最近阅读unix网络编程之后的理解)
FPM在linux kernel > 2.5.44的时候,默认值不设置会自动使用epoll, 但是fpm只有master进程是epoll, worker进程依旧是poll workerman本质是一个fpm这个也有一点不妥, fpm是一个实现了fastcgi协议并用解析的应用, 而workerman走的是php-cli进行解析
fastcgi是fpm和nginx之类的web服务器之间传输数据使用的协议,fpm跟wokerman一样,master进程只负责监控子进程,实际都是子进程负责接受套接字连接并处理业务逻辑,fpm子进程执行(exec)php代码
FPM每次请求创建线程->加载文件->销毁线程 WM启动一次后续请求无需再进行加载
不要把WM当成一个Web框架,实际上它算是个应用服务器,是跟NGINX一个层面的东西 如果把Workerman比作nginx,那webman可以算是php-ngx
关于webman生命周期参考文档 https://www.workerman.net/doc/webman/others/lifecycle.html
关于webman性能参考文档 https://www.workerman.net/doc/webman/others/performance.html
public function xxx(){
全部变量到}执行完毕回收,
}
据我个人看法,常驻内存确实会比fpm快,但是真正是在于epoll 事件回调 才是性能大幅度提升的关键。
https://www.workerman.net/a/1328
如果业务上有使用数据库,也不需要每次都tcp连接,(其实就是fpm下的opencache)
只谈http应用的话,fpm一样支持epoll(fpm配置项events.mechanism = epoll),多路复用技术是用在套接字连接上的,workerman本质上就是一个fpm,workerman相比fpm代码常驻内存,少了各种初始化编译过程,再就是因为代码常驻内存,全局和静态变量持久保存,可以复用数据类的连接。(以上纯属个人最近阅读unix网络编程之后的理解)
FPM在linux kernel > 2.5.44的时候,默认值不设置会自动使用epoll, 但是fpm只有master进程是epoll, worker进程依旧是poll
workerman本质是一个fpm这个也有一点不妥, fpm是一个实现了fastcgi协议并用解析的应用, 而workerman走的是php-cli进行解析
fastcgi是fpm和nginx之类的web服务器之间传输数据使用的协议,fpm跟wokerman一样,master进程只负责监控子进程,实际都是子进程负责接受套接字连接并处理业务逻辑,fpm子进程执行(exec)php代码
FPM每次请求创建线程->加载文件->销毁线程
WM启动一次后续请求无需再进行加载
不要把WM当成一个Web框架,实际上它算是个应用服务器,是跟NGINX一个层面的东西
如果把Workerman比作nginx,那webman可以算是php-ngx
关于webman生命周期参考文档
https://www.workerman.net/doc/webman/others/lifecycle.html
关于webman性能参考文档
https://www.workerman.net/doc/webman/others/performance.html