随心一记

一二三四五,上山打老鼠


  • 首页

  • 归档

  • 标签
ywcsb

ywcsb

游戏可以不玩,小说不能不看。

153 日志
3 分类
42 标签
RSS
GitHub 知乎 随心一记
Links
  • 随心一记
  • 追梦人物的
  • MSDN

利用 OPcache 扩展提升 PHP7 性能

发表于 2019-01-26 | 阅读 791 | 分类于 系统运维 |

PHP在运行的时候,存在这样的一个流程,先将PHP代码预编译,生成字节码后再加载到内存里,最后CPU在内存上执行编译后的字节码片段。我们会发现,在执行PHP程序的时候,每次都经过这样的流程,此非浪费Time,是的,很容易联想到:为何不向C++语言看齐呢,将源码编译成可直接加载到内存so哥呢?。自从PHP5.5.0出来后,就内置此zend扩展了。 php7安装可以参考该链接安装CentOS7采用yum方式安装PHP7

What is OPcache

OPcache是PHP中的Zend扩展,可以大大提升PHP的性能。 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

判断是否已扩展OPcache
php -m | grep OPcache
Zend OPcache
Zend OPcache

如果没有开启的话,可以在php.ini配置中开启

echo zend_extension="opcache.so" >> /etc/php.ini

如果已开启的话,可以在/etc/php.d/opcache.ini配置中修改设置

关于OPcache配置

接下来,我们需要在 PHP 的配置文件中启用 OPcache(默认是关闭的):

opcache.enable=1

下面我们继续对 OPcache 进行一些优化配置:

opcache.memory_consumption=512

这个配置表示你想要分配给 OPcache 的内存空间(单位:MB),设置一个大于 64 的值即可。

opcache.interned_strings_buffer=64

这个配置表示你想要分配给实际字符串的空间(单位:MB),设置一个大于 16 的值即可。

opcache.max_accelerated_files=32531

这个配置表示可以缓存多少个脚本,将这个值尽可能设置为与项目包含的脚本数接近(或更大)。

opcache.validate_timestamps=0

改配置值用于重新验证脚本,如果设置为 0(性能最佳),需要手动在每次 PHP 代码更改后手动清除 OPcache。如果你不想要手动清除,可以将其设置为 1 并通过 opcache.revalidate_freq 配置重新验证间隔,这可能会消耗一些性能,因为需要每隔 x 秒检查更改。

opcache.save_comments=1

这个配置会在脚本中保留注释,推荐开启该选项,因为一些库依赖于这个配置。

opcache.fast_shutdown=0

快速关闭会给一个更快速清理内存的机制,不过,在我的基准测试中,更慢一些,可能这会应用带来一些性能提升。

所以,最终的配置优化长这样:

opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.fast_shutdown=0

你可以使用这些配置值进行实验,具体配置值取决于你的应用大小和服务器配置。

觉得不错,支持一下!
geerniya WeChat Pay

微信打赏

geerniya Alipay

支付宝打赏

# php
CentOS7采用yum方式安装PHP7
python3 使用schedule模块定时执行任务

发表评论

共 0 条评论

    暂无评论
© 2018 - 2022 ywcsb
冀ICP备17022045号-1
Supported by 腾讯云