WordPressが2倍に高速化。php7の威力をさくらのレンタルサーバで試してみた。

去る2016年12月に、さくらのレンタルサーバーでphpのバージョン7(php7.1)が使用できるようになったので、試しに使ってみました。

さくらのレンタルサーバ PHP7.1 提供開始のお知らせ | さくらインターネット

W3Techsによると、現在主流のphpバージョンは5で、phpで稼働しているサイトのうち96%がphp5で運用されています。一般的にはphp5.3php5.6が使われているケースが多いでしょう。

W3Techs php7

2015年12月にリリースされたphp7は、phpバージョン6をスキップしての11年ぶりのメジャーバージョンアップとなっています。

php7はphp5とくらべて実行処理速度が大幅に改善され、Webサイトがサクサク高速に表示されるようになるそうなので、どれくらい速くなるのか、導入メリットはあるのかなどを検証してみました。

さくらのレンタルサーバーでは、以下のすべてのプランでphp7.1が使用できるようになっています。
ライトプラン
スタンダードプラン
プレミアムプラン
ビジネスプラン
ビジネスプロプラン
レンタルサーバーを新規契約してすぐにphp7.1の環境を試すこともできますし、すでにphp5でで動作しているウェブアプリケーションを運用しているならば、 php7.1に設定を切り替えてそのまま動作させることもできます。
いちどphp7.1に設定したあと、うまく動かないようならばすぐにphp5にも戻せます。

1. php7.1への切替はコントロールパネルで

php7.1への切替は、さくらインターネットサーバコントロールパネルから簡単に切り替えることができます。
ログイン後に左メニューの「PHPのバージョン選択」で変更できます。ここでは、さくらのレンタルサーバースタンダードプランを例に説明します。
(ビジネスプロプランの場合はメニューが少し異なります。「PHP言語に関する設定」→「PHPのバージョン選択」で切り替えできます。)

さくらのレンタルサーバーコントロールパネル PHP7
php7を選択

以上でphp7.1への切替が完了しました。
ご自身のWebサイトをブラウザでアクセスしてみてください。以前と変わらず同じページが表示されましたでしょうか?
もし、画面がまっ白になってしまったり、何かエラーがでるようならば、それはphp7.1へバージョンアップしたことによる不具合と考えられます。
そんな場合は後述の「こんなときには」をお読みください。
もしそれでも問題が解決せず、ご自身でも解決の方法が分からないならば、残念ですがphp7化をあきらめてください...

余談ですが、さくらのレンタルサーバービジネスプロプランの場合は、phpの動作モードをモジュール版にすることができます。

Apache モジュール版

ビジネスプロ以外のプランでは、phpの動作モードは「モジュール版」は選べず「cgi版」のみです。モジュール版のほうがphpを高速に動作させることが可能なようですが、php7はいずれの版でも動作させることができます。

2. クイックインストールでphp7を試してみる

さくらのレンタルサーバーには、ウェブアプリケーションが簡単にインストールできる「クイックインストール」の機能があります。php7環境でもこれらのウェブアプリケーションをインストールすることができますが、すべてのアプリケーションがphp7に対応しているわけではないようです。
クイックインストールメニューの中の「ブログ」と「CMS(コンテンツ管理システム)」のカテゴリで試してみたところ、以下のような結果になりました。

ウェブアプリケーション php7環境での動作
ブログ - WordPress 動作OK (Version 4.7.1)
CMS - concrete5 動作OK (Version 8.0.2)
CMS - XOOPS Cube Legacy インストール失敗。途中でエラーとなる。(Version 2.2.1)

クイックインストールでインストールしたアプリケーションがphp7環境でうまく動かない場合は、そのアプリケーションがphp7に対応しているかどうか、配布元のサイトで確認してみてください。

3. php5とphp7の処理速度比較

php7.1にバージョンアップしたらどれくらいサイトの表示速度が速くなるのか、実際に検証してみます。
ここでは例として、WordPressで作られたサイトで10件の記事を表示するページで比較します。
比較するためのベンチマークツールはGoogle Pagespeed Insightsabコマンドを使います。

Google PageSpeed Insightsによる比較

Google PageSpeed Insightsは、指定したWebサイトを読み込んで解析し、サイトの改善提案をしてくれるツールです。ページの表示速度も評価してくれますので、これで1ページの表示速度を計測してみました。

Google PageSpeedによるphp5とphp7の表示時間比較
グラフ1:Google PageSpeedでのページ表示時間比較(単位:秒。小さいほど良い)

php5.6でのページ表示時間が0.66秒に対し、php7.1では0.29秒となり、半分の時間で表示することができています。

abコマンドによる比較

ab(Apache Bench)コマンドによる比較を行ってみました。これは、指定した回数のhttpリクエストを送信してくれるコマンドです。
ここでは、同時接続数100で200回のhttpリクエストを送信し、その所要時間を計測してみました。

ab -n 200 -c 100 "サイトのURL"
screen-shot-2017-01-19-at-15-41-50_1
グラフ2:abコマンドでのページ表示時間比較(単位:秒。小さいほど良い)

php5.6でのページ表示時間が7.3秒に対し、php7.1では5.4秒となっています。倍のパフォーマンスほどではありませんが、php7.1のほうが処理速度が向上していることが分かります。

このように、php7はphp5に比べて処理性能がかなり向上しています。サイトの表示が遅いと感じている方はphp7にすることをおすすめします。

4. こんなときには(トラブル対応)

表示速度改善の面でメリットがあるphp7ですが、お使いのWebアプリケーションによっては、php7へのバージョンアップで動作しなくなることがあります。
ここではWordPressサイトの場合を例に、トラブルを回避する方法を紹介します。

画面がまっ白になる場合

php7にバージョンアップ後、ページが真っ白になって何も表示されなくなった場合は、Webアプリケーション内部でエラーが起こっています。
ひとまず、エラーメッセージを表示するためにデバッグモードを有効にします。

WordPressをインストールしたディレクトリにwp-config.php というファイルがあります。
このファイル中のWP_DEBUGを定義している行をtrueにすることで、デバッグモードが有効になり詳細なエラーメッセージが表示されるようになります。

define('WP_DEBUG', true);

もしこの記述が始めから存在しない場合はご自身で追加してください。

先ほどは白い画面だったWordPressページを再度ブラウザで表示してみると、詳細なエラーメッセージが表示されるようになります。

screen_shot_2017-01-18_at_17_32_09

エラーメッセージ中に書かれているファイルのパスに注目してください。wp-includeswp-adminなどが含まれている場合はWordPress本体が引き起こしているエラーです。
wp-content/plugins/ が含まれている場合は、インストールしているWordPressプラグインが原因のエラーです。

最新バージョンのWordPressはすでにphp7に対応していますので、WordPress本体のエラーの場合は本体バージョンを最新版にバージョンアップすることで解決できます。
プラグインが引き起こしているエラーの場合は、プラグインのバージョンを最新にしてください。
もし最新バージョンのプラグインを使ってもエラーが表示され問題が解決しない場合は、残念ながらそのプラグインはphp7に対応していないということになりますので、プラグインの使用をあきらめるか、同じ機能を持つ別のプラグインを探していただくことになります。

WordPress本体にしてもプラグインにしても、バージョンアップする際には、念のため先にさくらインターネットのサーバコントロールパネルでいったんphp5にバージョンを戻してから行ってください。

おわりに

以上、php7のメリットについてご説明しました。
さくらのレンタルサーバーではphp7にバージョンアップしても、問題があれば気軽にphp5に戻せますので、閲覧者の少なそうな時間にphp7を試してみてはいかがでしょうか? 快適のあまりきっと戻れなくなりますよ!
※ただし利用環境によっては、WordPress本体やプラグインが動作しなくなる可能性がありますのでご注意ください。