OpCache - 了解缓存如何工作,每个用户或每个资源?

时间:2013-12-02 13:02:44

标签: php caching opcache

我正在使用OpCache,因为它附带了PHP 5.5.x并且我对它非常满意,但我想调整它的内存设置,这就是我理解不足的地方......

当给定用户请求给定页面时,服务器应答此请求,调用PHP解释器,解释器将操作码存储在缓存中,提供内容,以及相关内容。下次请求进入时,如果请求的操作码相同,缓存会启动,但我的问题是......

缓存是基于每个用户工作的(并且缓存的操作码仅适用于此特定用户的请求),还是它们适用于使用这些缓存操作码的任何请求?

我想做的是调整OpCache以使用一定数量的内存,但我不知道内存池是基于每个用户工作还是像共享资源池一样。

你能给我一个提示吗?

1 个答案:

答案 0 :(得分:8)

您已经知道操作码如何存储在缓存中并从共享内存中读取。然而,它不是基于用户,而是基于脚本级别。已经解析编译到操作码的每个php文件将保存到共享内存并从那里执行。 解析编译步骤(否则会很慢)将为每个已缓存的脚本短路。

enter image description here

要回答您的问题,不是缓存不是基于每个用户,而是基于每个脚本。缓存的操作码仍由脚本引擎(主要是Zend)按请求执行。

是的,它确实从共享内存中读取。

参考 D. Shafik: Everything You Need to Know About OpCode Caches