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

Jul*_*sen 3 php caching opcache

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

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

缓存是基于每个用户(并且缓存的操作码仅适用于此特定用户的请求)或者是否适用于使用这些缓存操作码的任何请求?

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

你能给我一个提示吗?

Awe*_*emo 8

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

在此输入图像描述

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

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

参考 D. Shafik:关于OpCode缓存需要知道的一切