webman-常驻内存疑惑

evilk

1.
只有控制器 和 启动脚本中 载入的文件(比如,process,composer包),才是常驻内存的
我们自己写的业务代码,比如,在某个方法里,直接 new 的,这种都不是常驻内存的吧
因为遵循PHP垃圾回收机制

2.
如果仅仅只比较业务代码,是不是跟fpm中,性能差不多的呢?

1908 3 4
3个回答

admin

public function xxx(){
全部变量到}执行完毕回收,
}

据我个人看法,常驻内存确实会比fpm快,但是真正是在于epoll 事件回调 才是性能大幅度提升的关键。
https://www.workerman.net/a/1328

如果业务上有使用数据库,也不需要每次都tcp连接,(其实就是fpm下的opencache)

  • 只会PHP 2022-04-21

    只谈http应用的话,fpm一样支持epoll(fpm配置项events.mechanism = epoll),多路复用技术是用在套接字连接上的,workerman本质上就是一个fpm,workerman相比fpm代码常驻内存,少了各种初始化编译过程,再就是因为代码常驻内存,全局和静态变量持久保存,可以复用数据类的连接。(以上纯属个人最近阅读unix网络编程之后的理解)

  • nitron 2022-04-22

    FPM在linux kernel > 2.5.44的时候,默认值不设置会自动使用epoll, 但是fpm只有master进程是epoll, worker进程依旧是poll
    workerman本质是一个fpm这个也有一点不妥, fpm是一个实现了fastcgi协议并用解析的应用, 而workerman走的是php-cli进行解析

  • 只会PHP 2022-04-22

    fastcgi是fpm和nginx之类的web服务器之间传输数据使用的协议,fpm跟wokerman一样,master进程只负责监控子进程,实际都是子进程负责接受套接字连接并处理业务逻辑,fpm子进程执行(exec)php代码

nitron

FPM每次请求创建线程->加载文件->销毁线程
WM启动一次后续请求无需再进行加载

不要把WM当成一个Web框架,实际上它算是个应用服务器,是跟NGINX一个层面的东西
如果把Workerman比作nginx,那webman可以算是php-ngx

  • 暂无评论
walkor
  • 暂无评论
年代过于久远,无法发表回答
🔝