スポンサーリンク

今まで、php5を使っていましたが、
WordPressの管理画面が遅いので気なっていました。

PHP7だと、メモリ使用率も下がり、高速化するらしいので
インストールしてみました。

PHP7のインストール

CentOS7の標準レポジトリではPHP5しかインストールできません。

追加レポジトリにremi,remi-php71を指定することで
Centos7でもyumでPHP7(PHP7.1)がインストールできます。

実際のコマンド

yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-pdo php-gd php-fpm php-mysql php-xml

アップデート後確認する事

ApacheのPHP7の実行にmod_phpを使っている場合は、
confファイルを確認しておきましょう。

Apache 2.4.6では/etc/httpd/conf.modules.d/15-php.conf
のファイルです。

モジュールの読み込みがphp7となっていることを確認します。

LoadModule php7_module modules/libphp7.so

preformMPMなら上のようになっています。

APCu , OPcacheでさらなる高速化

PHP7でも早くなりました。
APCu とOPcacheを導入する事でもっと早く、メモリの節約にもなります。

APCが無くなって、APCuになった

数年前、PHPのキャッシュ機能と言えばAPCでした。
この時もPHP高速化のためAPCをインストールしましたが、
有効化するとWordpressが真っ白になってしまいました。

この現象が直らなかったため、APCは無効化していました。

今回PHPのキャッシュを、使うにあたり調べるとAPCがありません。
なぜか、オペコードキャシュのZend OPcache、
データキャッシュの APCu に分裂していました。

これは、前のAPCの時代にオペコードキャシュ部分に深刻なバグ
があった事が原因のようです。

APCからAPCuに変わり、オペコードキャシュ機能が削除され
データキャッシュを行っています。

オペコードキャシュはZend OPcacheが行っています。

詳しくはこちら
【参考】APCがAPCuとZend OPcacheに取って代わられたワケ

インストールはyumからできました。

実際のコマンド

yum install --enablerepo=remi,remi-php71 php-pecl-apcu php-pecl-zendopcache

参考にしたのはこちらのサイト
CentOS7 に 旧 APC (apcu & opcache)を導入する

テンプレート更新しても反映されない

apcu & opcacheで高速化はできるのですが唯一のデメリットがあります。
WordPressテンプレートやプラグインを更新しても反映されない事です。

apcu & opcacheでキャッシュされているので、記事は反映されます。
phpコード部分であるテンプレートやプラグインはキャッシュが残るので
キャッシュをクリアしないと更新が反映されません。

apcu & opcacheキャッシュをクリアする方法

一番簡単で手軽なのが、Apacheの再起動をする。
mod_php限定です。

もうひとつがopcache_resetを使う方法。

opcache_reset();

と書いたファイルを拡張子をphpにして保存。
webからアクセスできる所にアップロードしてアクセスすると
キャッシュがクリアされます。

WordPressならプラグインもあるので
こちらを利用しても良いでしょう、ただし日本語翻訳がありません。
【参考】WP OPcache

PHP7でCPU使用率が下がった

さくらのVPSの管理画面でCPUの使用率が下がった

さくらのVPSの管理画面でCPU時間が表示されているのですが
PHP7に変えた頃からCPU時間が低下しています。

同時にメモリの使用率も下がっています。

サーチコンソールでもページのダウンロード時間 (ミリ秒)の
平均時間が、この頃から下がっています。

あとがき

本来は超高速WordPress仮想マシン「KUSANAGI」でも使われているHHVM
を使う予定でした。

PHP-FPMもダメでした。

今後、別サーバーなどでテストしHHVMかPHP7のPHP-FPMを設定する予定です。

HHVMかPHP-FPMならApacheのMPMをeventにしても効率が良いので
より早くなりそうです。