我正在使用OpCache,因为它附带了PHP 5.5.x并且我对它非常满意,但我想调整它的内存设置,这就是我理解不足的地方......
当给定用户请求给定页面时,服务器应答此请求,调用PHP解释器,解释器将操作码存储在缓存中,提供内容,以及相关内容。下次请求进入时,如果请求的操作码相同,缓存会启动,但我的问题是......
缓存是基于每个用户工作的(并且缓存的操作码仅适用于此特定用户的请求),还是它们适用于使用这些缓存操作码的任何请求?
我想做的是调整OpCache以使用一定数量的内存,但我不知道内存池是基于每个用户工作还是像共享资源池一样。
你能给我一个提示吗?
答案 0 :(得分:8)
您已经知道操作码如何存储在缓存中并从共享内存中读取。然而,它不是基于用户,而是基于脚本级别。已经解析和编译到操作码的每个php文件将保存到共享内存并从那里执行。 解析和编译步骤(否则会很慢)将为每个已缓存的脚本短路。
要回答您的问题,不是缓存不是基于每个用户,而是基于每个脚本。缓存的操作码仍由脚本引擎(主要是Zend)按请求执行。
是的,它确实从共享内存中读取。
参考 D. Shafik: Everything You Need to Know About OpCode Caches