# 聊聊zend opcache的配置项

- Link: https://www.xuepaijie.com/html/skill/devops/2003.html
- Published: 2019-04-25T21:14:48+08:00
- Author: Admin

### opcache.revalidate_freq

这个选项用于设置缓存的过期时间（单位是秒），当这个时间达到后，opcache会检查你的代码
是否改变，如果改变了PHP会重新编译它，生成新的opcode，并且更新缓存。

值为“0”表示每次请求都会检查你的PHP代码是否更新（这意味着会增加很多次stat系统调用，
译注：stat系统调用是读取文件的状态，这里主要是获取最近修改时间，这个系统调用会发生
磁盘I/O，所以必然会消耗一些CPU时间，当然系统调用本身也会消耗一些CPU时间）。可以在
开发环境中把它设置为0。

### opcache.validate_timestamps

当这个选项被启用（设置为1），PHP会在**opcache.revalidate_freq**设置的时间到达后检测
文件的时间戳（timestamp）。

如果这个选项被禁用（设置为0），**opcache.revalidate_freq**会被忽略，PHP文件永远不会
被检查。这意味着如果你修改了你的代码，然后你把它更新到服务器上，再在浏览器上请求
更新的代码对应的功能，你会看不到更新的效果，你必须得重新加载你的PHP（使用_**kill-
SIGUSR2**_强制重新加载）。

### opcache.max_accelerated_files

这个选项用于控制内存中最多可以缓存多少个PHP文件。这个选项必须得设置得足够大，大于
你的项目中的所有PHP文件的总和。

你可以运行“**_find . -type f -print | grep php | wc -l_**”这个命令来快速计算你的
代码库中的PHP文件数。

### opcache.memory_consumption

这个选项的默认值为64MB，可以通过调用**opcachegetstatus()**来获取opcache使用的内存
的总量，如果这个值很大，你可以把这个选项设置得更大一些。

### opcache.interned_strings_buffer

PHP使用了一种叫做字符串驻留（string interning）的技术来改善性能。例如，如果你在代码
中使用了1000次字符串“foobar”，在PHP内部只会在第一使用这个字符串的时候分配一个不可
变的内存区域来存储这个字符串，其他的999次使用都会直接指向这个内存区域。这个选项则会
把这个特性提升一个层次——默认情况下这个不可变的内存区域只会存在于单个php-fpm的进程
中，如果设置了这个选项，那么它将会在所有的php-fpm进程中共享。在比较大的应用中，这
可以非常有效地节约内存，提高应用的性能。

这个选项的值是以兆字节（megabytes）作为单位，如果把它设置为16，则表示16MB，默认是
4MB。

### opcache.fast_shutdown

它的作用是在单个请求结束时提供一种更快速的机制来调用代码中的析构器，从而加快PHP的
响应速度和PHP进程资源的回收速度，这样应用程序可以更快速地响应下一个请求。把它设置
为1就可以使用了。
