opcache的缓存模式和workerman守护进程模式

DY

问一个问题

opcache的缓存模式

workerman守护进程模式

是不是一样的效果
同样都是把php缓存在内存中运行,性能上差距大么?

7481 1 1
1个回答

walkor

原理不太一样,性能上比opcache要好很多。

一般带opcode缓存的php请求过程有以下步骤:
1、zend创建执行环境
2、调用各个模块的的RINIT函数 例如session模块、mysql、json等等一堆
3、从共享内存中获取opcode缓存并运行 《====
4、运行过程中创建PHP运行过程中变量名称和值内容的符号表
5、运行过程中创建当前所有的函数以及类等信息的符号表
6、运行完毕清理所有的函数以及类等信息的符号表
7、运行完毕清理PHP运行过程中变量名称和值内容的符号表
8、运行完毕调用所有模块的RSHUTDOWN函数 例如session模块、mysql、json等等一堆

而workerman在处理一个php请求时一般只有
4、运行过程中创建PHP运行过程中变量名称和值内容的符号表

workerman没有重复的环境包括函数类符号表的创建销毁过程(这也就是为什么workerman可以永久保存全局对象或者资源),没有各个模块重复的RINIT RSHUTDOWN,更不用去共享内存中获取opcodes缓存。所以workerman运行飞快,比传统的apc类的opcode缓存要快很多。

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