如何启用OPCache提高PHP程序性能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
(1)在命令行下可通过如下命令检查是否已经安装了OPcache:
php -m | grep "OPcache"
有结果则代表已安装了。
(2)安装OPCache模块
如果你的php环境没有安装该模块,也可以通过如下方法进行安装:
依次执行下面的命令
wget http://pecl.php.net/get/zendopcache-7.0.2.tgz tar xzf zendopcache-7.0.2.tgz cd zendopcache-7.0.2 phpize
(如果不知道 phpize 在哪里的话可以通过 find 命令进行查找,也可以找到PHP路径,通常是在一起的,我的就在/alidata/server/php/bin/phpize,下面这行也要按你的php.ini路径自行修改)
./configure --with-php-config=/usr/local/php/bin/php-config make make install
如果显示Installing shared extensions: /alidata/server/php/lib/php/extensions/no-debug-zts-20100525/ 则表示安装成功了。
(3)开启OPCache模块支持
找到php.ini文件,在文件末尾加上如下代码(如果已经存在[opcache]这个标签了,则只需在这个标签下做相应的添加或者修改):
[opcache] ; dll地址 zend_extension=php_opcache.dll ; 开关打开 opcache.enable=1 ; 开启CLI opcache.enable_cli=1 ; 可用内存, 酌情而定, 单位为:Mb opcache.memory_consumption=128 ; Zend Optimizer + 暂存池中字符串的占内存总量.(单位:MB) opcache.interned_strings_buffer=8 ; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值 opcache.max_accelerated_files=10000 ; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒 opcache.revalidate_freq=1 ; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高 opcache.fast_shutdown=1 ; 不保存文件/函数的注释 opcache.save_comments=0
添加完毕重启apache或者nginx服务器,打开phpinfo页面看看是否已经生效,如果看到如下信息则代表已经配置成功了。
(4)功能测试以及注意事项
在phpinfo()信息中, 目前来看有两条信息犹为重要:
Cache hits (高级缓存命中)
Cache misses (高级缓存未命中)
通过这两条信息中即可观察缓存运行情况。
我们做个测试,验证一下什么是opcache,新建包含如下代码的一个文件:
echo 'hello opcache';
这是一段非常简单的php代码,请保存为demo.php文件然后访问,随意刷新,Cache hits数值会不停地增加,说明起作用了。
然后你修改代码为:
echo 'hello codetc.com';
再刷新demo.php,应该可以看到效果,打印出来的值仍然是 hello opcache,即源码被缓存了,它不再解析demo.php文件。
那多少秒之后其结果才会变为 hello phpernote.com 呢?这里可通过设置:
opcache.force_restart_timeout=180
的时间来控制更新速度,这里的单位是秒,即180秒后重新编译一次源php编码。
这就类似于web项目中的静态文件缓存一下,比如我们加载一个网页,浏览器会自动帮我们把jpg,css缓存起来,唯独php没有缓存,每次均需要open文件,解析代码, 执行代码这一过程,而opcache即可解决这个问题,代码会被高速缓存起来,提升访问速度。
所以当改变PHP文件代码后,并不能立即看到效果,这视opcache.revalidate_freq
的更新周期而定,所以建议在项目更新执行自动化脚本利用opcache_reset()
函数自动重置opcache。OPcache总共提供了如下几个函数:
opcache_compile_file — 无需运行,即可编译并缓存 PHP 脚本
opcache_get_configuration — 获取缓存的配置信息
opcache_get_status — 获取缓存的状态信息
opcache_invalidate — 废除脚本缓存
opcache_reset — 重置字节码缓存的内容
php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。