常阳时光

php7 简单优化加速 WordPress 博客

php7 相比 php5 效率高很多,但是 PHP7 也有一些优化空间。比如,开启 Zend Opcache、HugePage。

一个大神 php 5.3~php7.4 速度比较:

PHP 7.4		0.045616865158081 (Ubuntu 16+PPA)
PHP 7.0 0.099370956420898 (Debian 9) (PHP 7.0~7.3变化不太大)
PHP 5.3 0.52340078353882 (Ubuntu 12)
PHP 5.5.9 0.25087404251099 (Ubuntu 14)

启用 Zend Opcache

启用 Zend Opcache 很简单,OneinStack 安装时就可以选上,安装后增加也可以。或者直接使用 yum、apt 工具,安装 php-opcache 插件。然后在 php.ini 里面配置启用:

温馨提示:OneinStack 目前版本 opcache 配置文件在这里:/usr/local/php/etc/php.d/02-opcache.ini

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=192
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=100000
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.consistency_checks=0

开启 HugePage

开启 HugePage 有利于 PHP 7 更快,开启方法:

首先在系统中开启 HugePages,以 CentOS 7 为例,通过命令:$sudo sysctl vm.nr_hugepages=128,分配 128 个预留大页内存。(注意 VPS 内存大小,单个大页内存 2048 kB,128 个就是 256MB)

然后开启 Opcache 的 huge_code_pages,在前面 opcache 配置后加上 opcache.huge_code_pages=1,然后重启 php 即可。

# cat /proc/meminfo  | grep Huge
AnonHugePages: 436224 kB
ShmemHugePages: 0 kB
HugePages_Total: 128
HugePages_Free: 108
HugePages_Rsvd: 81
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 262144 kB

这样,PHP 会把自身 text 段以及内存分配中的 huge 都采用大内存页来保存,减少TLB miss,从而提高性能。

开启 Opcache File Cache

可以让 Opcache 把 opcode 缓存缓存到外部文件,对于一些脚本,会有很明显的性能提升。

在前面 opcache 配置后加上 opcache.file_cache=/home/cache,然后重启 php 即可。

这样PHP就会在 /home/cache 目录下缓存一些 Opcode 二进制导出文件,可以跨 PHP 生命周期存在。

参考:echo 少年