PHPにとっても、Kinstaにとっても、大事な年となりました。PHP 8.0がリリースされ、すでに1年が経過。2021年11月25日にはPHP 8.1がリリースされ、多くの素晴らしい機能がもたらされました。PHP 8.1の機能については別の記事で詳しく解説しています。

毎年、Kinstaでは様々なPHPプラットフォームの詳細なパフォーマンスベンチマークをリリースし、PHPバージョン間での比較を行っています。今年はさらにベンチマークを強化し、WordPressDrupalJoomlaLaravel、Symfonyなど、14PHPプラットフォームや構成を対象に、5つのPHPバージョンをベンチマークしました。また、WooCommerceEasy Digital Downloads、October CMS、Gravなど、人気のあるPHPプラットフォームもテストしました。

Kinstaでは、サポートされている最新のPHPバージョンの利用を奨励しています。そのようなバージョンは最も安全であるだけでなく、多くのパフォーマンス改善も含まれています。この記事では、PHP 8.0と8.1が他のバージョンのほとんどすべてを圧倒する様子をお見せします。

ご準備はいいですか?それでは、参りましょう。

PHPの現状

PHP(「PHP: Hypertext Preprocessor」の再帰的頭字語)は、最も広く使われているサーバーサイドのスクリプトおよびプログラミング言語の一つです。オープンソースであり、主にウェブ開発に使用されています。WordPressソフトウェアコアの大部分はPHPで実装されているため、WordPressコミュニティにとって非常に重要な言語です。

PHP Logo
PHP logo.

PHPは死んだ」と主張する人もいるかもしれませんが、それは事実とかけ離れています。W3Techsによると、PHPは、全ウェブサイトの78.1でサーバーサイド プログラミング言語として使用されています。およそ、5つのウェブサイトのうち4です!

PHPはこれまで以上に生き生きと、より速く、より良いものになっているのです。

サーバーサイドでの使用言語の統計
サーバーサイドでの使用言語の統計

もしこれが「死んで」いるように見えるなら、何が生きているように見えるのか教えてほしいものです。JavaScriptやその新しいサーバーサイドの実装と比較しても、PHPはその横で堂々と屹立しています。

しかし、PHPコミュニティには大きな問題があります。多くのウェブサイトで時代遅れの、サポートされていないPHPバージョンやインストールがいまだに使用されているのです。W3Techsによると、29.9%のウェブサイトが未だにPHP 5.6以下のバージョンを使用しています。

 WordPressのPHPバージョン統計(2022年2月1日現在)
WordPressのPHPバージョン統計(2022年2月1日現在)

そして、WordPressの統計を見ると、サポートされているPHPのバージョンを使用するサイトは50.6%しかありません。さらにひどいことには全WordPressサイトの10.2%がPHP 5.6以下を利用しています。PHPコミュニティ全体に比べれば良いものの、それでもまだ多くのサイトのバックドアは大きく開いたままなのです。

この問題には様々な理由があると考えます。

  • WordPressコミュニティ内でのPHPと、PHPがWordPressで果たす重要な役割についての情報共有の不足
  • 新しいバージョンのPHPで動作しない、プラグインやテーマの互換性問題
  • 顧客に問題が起こることを恐れてPHPの新しいバージョンを勧めないWordPressサーバーの消極性

これらの問題の解決のために、Kinstaでは、PHPと同じエンドオブライフ(EOL)スケジュールに従っています。これにより当社でホストされているすべてのWordPressサイトは、可能な限り高速、かつ、安全に管理、維持されています。

KinstaでのPHP使用状況は、一般的なWordPressコミュニティと比べてどうでしょうか?PHPのKinstaでの使用率を確認しました。

以下がその概要です。

  • KinstaのWordPressサイトの62.22%がPHP 7.4を利用しています。
  • KinstaのWordPressサイトの27.27%がPHP 8.0を利用しています。
  • KinstaのWordPressサイトの10.51%がPHP 8.1を利用しています。

※2022年12月1日時点

私たちはこの統計データを誇りに思います。これは、Kinstaのお客様のPHPバージョンアップ率が、一般的なWordPressやPHPコミュニティよりもはるかに高いことを意味します。とても幸せな気持ちです。

注: PHP 8.0には多くの変更点があることで、多くの人がまだ移行に踏み切っていません。しかし、近いうちに多くのサイトが移行することが予想されます。

PHPを学びたい方のために、いくつかのおすすめPHP学習リソースを無料、有料の両方でまとめました。

PHPベンチマーク(2023年)

PHP 7.2、7.3、7.4は、活発にはサポートされていませんが、多くのウェブサイトで今も使用されています。そこで、パフォーマンスの観点から新しいバージョンの素晴らしさを体感する意味でも、5種類のPHPをテストすることにしました。

今年のホットピックは、もちろん新しくリリースされたPHP 8.1です。近年のPHPの世界では最もエキサイティング、かつ最新の開発です。まだ、すべてのPHPベースのフレームワークやCMSがこれをサポートしているわけではありませんが、それでも可能な限り多くのフレームワークでテストしてみました。

各テストでは各プラットフォームの最新バージョンを使用し、15名の同時接続ユーザーによる1,000回のリクエストで、URLの1つをベンチマークしました。正確な結果を取得するため、テストは複数回実施。上位3つの結果の平均値を取ります。

テスト環境の詳細は以下の通りです。

  • コンピュータ:Intel Xeon(30コアCPU)、120GB RAM、1TB HDD。Google Cloud Platformで動作するコンピューティング最適化(C2)仮想マシンで、隔離されたコンテナで実行。Kinstaのすべてのホスティングプランで、C2マシンが採用されています。
  • OSUbuntu 20.04.1 LTS (Focal Fossa)
  • ウェブサーバー: Nginx 1.21.6 (nginx/1.21.6)
  • データベース: MariaDB 10.6.7 (MariaDB-1:10.6.7+maria~focal)
  • PHPバージョン:7.2, 7.3, 7.4, 8.0, 8.1
  • ページキャッシュ: すべてのプラットフォームと構成で無効
  • OPcache推奨されるphp.iniの設定を使用して、すべてのプラットフォームと設定でOPcacheを利用。ただし、「opcache.max_accelerated_files」の値は4000から50000に増加。使用したOPcacheの設定は以下のとおり。
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=50000
opcache.revalidate_freq=2
opcache.fast_shutdown=1
opcache.enable_cli=1

OPcacheはコンパイル済みのスクリプトのバイトコードをサーバーの共有メモリに格納します。これの結果、PHPによる、リクエストごとのスクリプトのロード/パース処理は必要なくなります。

テストしたPHPプラットフォームと構成

以下の14のPHPプラットフォームと構成でベンチマークを行いました。リンクをクリックすると、該当のテスト結果とメモに直接ジャンプします。データは、1秒あたりのリクエスト数で測定しました。リクエスト数が多ければ多いほど良い結果です。

各プラットフォームで付属するデモコンテツの内容は大きく異なるため、それぞれインストール直後の状態でパフォーマンスを測定しました。今回のテストは、プラットフォームの比較ではなく、各プラットフォームにおけるPHPバージョン間での比較のために実施しています。

テストしたページの理解を助けるために、グラフとスクリーンショットを掲載しました。大小ありますが、ご了承ください。

それでは、見ていきましょう。

WordPress 5.9-RC2

最初にテストしたプラットフォームはWordPressでした。結局のところ、あなたが読んでいるこのブログも、インターネット上のすべてのウェブサイトの 43.3%もWordPressですから当然です。美しいウェブサイト、ブログ、アプリケーションを作成できるフリーのオープンソースソフトウェアです。

WordPress logo

この記事の執筆時点で最新である5.9-RC2から始めました。Twenty Twenty-Twoテーマがインストールされています。URLに対して同時接続ユーザー数1510000リクエストをベンチマークします。なお、他のすべてのベンチマークテストでも同じ方法を使用しました。

テストしたWordPressのブログページ
テストしたWordPressのブログページ

テストURL: /hello-world/

  • テーマ:Twenty Twenty-Two
  • メモ: ブログページには、ロゴとキャッチフレーズを含むヘッダー、ナビゲーションメニュー、記事本文、1件のコメント、そして、検索、最近の投稿、最近のコメントなどが組み込まれたフッターウィジェットがあります。
  • イメージの取得元 WordPress.org
WordPress 5.9-RC2のPHPベンチマーク
WordPress 5.9-RC2のPHPベンチマーク

ベンチマークの結果

  • WordPress 5.9-RC2 PHP 7.2 のベンチマーク結果:106.56 req/sec
  • WordPress 5.9-RC2 PHP 7.3のベンチマーク 結果:108.45 req/sec
  • WordPress 5.9-RC2 PHP 7.4 のベンチマーク 結果:110.24 req/sec
  • WordPress 5.9-RC2 PHP 8.0の ベンチマーク結果:111.10 req/sec
  • WordPress 5.9-RC2 PHP 8.1のベンチマーク結果:163.43 req/sec 🏆

PHP 8.1は、PHP 8.0よりも47.10%高速な、圧倒的勝者です。他の結果がどれも僅差であることを考えると、この違いは目立ちます。また、PHP 7.2と比較すると、1秒あたり50%以上多くのリクエスト(またはトランザクション)を処理します。

PHP 8.1を利用したWordPressサイトはPHP 8.0の場合よりも、1秒あたり47.10%多くのリクエストを処理できます。今すぐ、アップデートしましょう!🤘🏽🚀 クリックでつぶやく

WordPress 5.9-RC2 + WooCommerce 6.1.1

WooCommerceは、WordPress用のオープンソースECソリューションです。他の人気のECプラットフォームと異なり、完全にカスタマイズ可能で拡張性があります。WooCommerceはWordPressコミュニティで最も人気のあるECプラグインの1つであり、インターネット上のすべてのECサイトの14%を占めます。

WooCommerce logo

ベンチマークテストでは、WordPress上にWooCommerceをインストールしました。WooCommerceのダミーデータと一緒に無料のStorefrontテーマを使用して、テストサイトを構築。テストしたURLは、特定の商品ページです。

テストしたWooCommerceの特定の商品ページ
テストしたWooCommerceの特定の商品ページ
  • テストしたURL /product/ hoodie/
  • テーマ: Storefront (3.9.1)
  • メモ:商品ページには、ヘッダー内にロゴ、キャッチコピー、ナビゲーションメニュー、検索ウィジェット、カートがあります。本文には、商品の画像、説明、「カートに入れる」ボタン、レビューと、複数のサイドバーウィジェットがあります。下部には、3つの製品を含む、関連製品ウィジェットがあります。また、より多くの製品を表示するためのサイドプルアウトウィジェットも含まれています。
  • イメージの取得元 WordPressプラグインリポジトリ
WordPress 5.9-RC2 + WooCommerce 6.1.1のPHPベンチマーク
WordPress 5.9-RC2 + WooCommerce 6.1.1のPHPベンチマーク

ベンチマークの結果

  • WordPress 5.9-RC2 + WooCommerce 6.1.1 PHP 7.2 のベンチマーク結果:130.73 req/sec
  • WordPress 5.9-RC2 + WooCommerce 6.1.1 PHP 7.3 のベンチマーク結果:137.52 req/sec
  • WordPress 5.9-RC2  + WooCommerce 6.1.1 PHP 7.4 のベンチマーク結果:141.48 req/sec
  • WordPress 5.9-RC2  + WooCommerce 6.1.1 PHP 8.0 のベンチマーク結果:141.71 req/sec
  • WordPress 5.9-RC2  + WooCommerce 6.1.1 PHP 8.1 のベンチマーク結果:147.67 req/sec🏆

WooCommerceでもPHP 8.1は圧倒的勝者です。PHP 8.0とはわずかな差ですが勝者です。

PHP 7.2を利用するWooCommerceストアは、競合他社のPHP 8.1を使ったストアに比べて11.47%も低速!今すぐアップグレードを! 🛒🚀 クリックでつぶやく

WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1

Easy Digital DownloadsはWordPress用の無料ECプラグインです。Pippin’s Pluginsによって作成された、デジタル製品の販売(例えば、電子書籍、ソフトウェア、ビデオゲーム)を対象とするプラグインです。

Easy Digital Downloads Logo

Easy Digital Downloadsのテストでは、無料のThemeddテーマとそのダミーコンテンツを使用してテストサイトを構築しました。テストしたページは商品ページです。

テストしたEasy Digital Downloadsの単一の商品ページ
テストしたEasy Digital Downloadsの単一の商品ページ
  • テストURL /downloads/money-buys-happiness/
  • テーマ: Themedd
  • メモ:Easy Digital Downloadsの商品ページは軽量で、画像、説明、購入ボタン、いくつかのカテゴリリンクしかありません。ヘッダーにはロゴ、キャッチコピー、カートがあり、フッターは基本的な著作権のテキストのみです。
  • イメージの取得元 Easy Digital Downloads公式サイト
WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1 PHPベンチマーク
WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1 PHPベンチマーク

ベンチマークの結果

  • WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1 PHP 7.2 のベンチマーク結果:352.87 req/sec
  • WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1 PHP 7.3のベンチマーク結果:382.17 req/sec
  • WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1 PHP 7.4のベンチマーク結果:392.07 req/sec
  • WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1 PHP 8.0のベンチマーク結果:407.59 req/sec🏆
  • WordPress 5.9-RC2 + Easy Digital Downloads 2.11.4.1 PHP 8.1のベンチマーク結果:非対応🚫

ベンチマークを行った時点では、最新のEasy Digital DownloadsはまだPHP 8.1をサポートしていませんでした。前年のベンチマークと同様、PHP 8.0はWordPressとEasy Digital Downloadsで他のすべてのPHPバージョンを凌駕しています。

Drupal 9.3.3

Drupalは、フリーでオープンソースのコンテンツ管理ソフトウェアです。柔軟性が高く、モジュール化された機能で人気があります。 W3Techsによると、Drupalは全ウェブサイトの1.3%で利用されており、コンテンツ管理システムを利用しているウェブサイトの2.0%がDrupalを利用しています。

Drupal logo

Drupalのコア機能が利用されたフードマガジンのデモサイトUmamiインストールプロファイルを利用するかたちで、Drupalをインストールしました。

テストしたDrupalのページ
テストしたDrupalのページ
  • テストURL /en/articles/dairy-free-and-delicious-milk-chocolate/
  • テーマ: Umami Food Magazine
  • メモ: テストで使用したページは記事で、以下のような多くの機能を含みます。検索ウィジェット、言語変換ウィジェット、ログインモジュール、パンくずリスト、注目記事ウィジェット付きのサイドバー、レシピコレクションウィジェット、サインアップフォーム。
  • イメージの取得元Drupal.org
 Drupal 9.3.3のPHPベンチマーク
Drupal 9.3.3のPHPベンチマーク

ベンチマークの結果

  • Drupal 9.3.3 PHP 7.2 のベンチマーク結果:非対応🚫
  • Drupal 9.3.3 PHP 7.3 のベンチマーク結果:267.62 req/sec
  • Drupal 9.3.3 PHP 7.4 のベンチマーク結果:268.84 req/sec
  • Drupal 9.3.3 PHP 8.0  のベンチマーク結果:289.04 req/sec
  • Drupal 9.3.3 PHP 8.1 ベンチマーク結果:302.27 req/sec🏆

Drupal 9.x.xは、前回ベンチマークを行ったときから大きく進化しました。新しいPHPバージョンと互換性があるだけでなく、パフォーマンスも非常に優れています。今後、どのように展開していくのか楽しみです。

Joomla! 4.0.6

Joomla!はもう一つのフリーでオープンソースのコンテンツ管理システムです。2005年に最初にリリースされ、今日使用されているオープンソースCMSでは2番目に人気があります。W3Techsによると、Joomla!は、全ウェブサイトの1.7%で使用されています。

Joomla! logo

Joomla!のベンチマークには、すべてのJoomla! 4.xディストリビューションに付属する無料のCassiopeiaテンプレートを使用しました。

テストしたJoomla!のページ
テストしたJoomla!のページ
  • テストURL /(ホームページ)
  • テーマ: Protostar (1.0)
  • メモ: Joomla!は、サイトにダミーのコンテンツを追加する「デフォルト英語(GB)サンプルデータ」と一緒にインストールされます。ホームページにはこのコンテンツのいくつかの段落が含まれ、検索ウィジェット、そして、ログインフォーム、人気のタグ、最新記事などの基本ウィジェットを搭載したサイドバーがあります。
  • イメージの取得元 Joomla.org
Joomla! 4.0.6のPHPベンチマーク
Joomla! 4.0.6のPHPベンチマーク

ベンチマークの結果

  • Joomla! 4.0.6 PHP 7.2 のベンチマーク結果:38.18 req/sec
  • Joomla! 4.0.6 PHP 7.3 のベンチマーク結果:39.41 req/sec
  • Joomla! 4.0.6 PHP 7.4 のベンチマーク 結果:39.57 req/sec
  • Joomla! 4.0.6 PHP 8.0 のベンチマーク結果:39.84 req/sec
  • Joomla! 4.0.6 PHP 8.1 のベンチマーク結果:41.97 req/sec 🏆

いくつかの不調を乗り越え、Joomla!は再び軌道に乗るかたちとなりました。結果は予想通りで、PHP 8.1が文句なしのチャンピオン。PHP 8.0が僅差で続きます。

Grav 1.7.29

GravはオープンソースのフラットファイルCMSです。データベースを使用しませんが、豊富な機能を備えています。Gravはテキストファイルからコンテンツを取得します。そのため、軽量で、ほとんどのサーバーに簡単にインストールすることができます。

Grav CMS logo

このテストを行った時点でGravは、PHP 7.3以上が必要でした。テストサイト構築には、Base Grav Package(デフォルトランディングページあり)を使用しました。

テストしたGravのホームページ
テストしたGravのホームページ
  • テストURL /(ホームページ)
  • テーマ: Quark
  • メモ:テストしたページはシンプルな1ページのウェブサイトです。以下の多くのコンテンツを含みます。ヘッダー、ロゴ、ナビゲーションメニュー、フッター。PHPの生のパフォーマンスをテストするため、Grav Core Cachingは無効化しています。
  • イメージの取得元 Grav公式サイト
Grav 1.7.29のPHPベンチマーク
Grav 1.7.29のPHPベンチマーク

ベンチマークの結果

  • Grav 1.7.29 PHP 7.2 のベンチマーク結果:非対応🚫
  • Grav 1.7.29 PHP 7.3 のベンチマーク結果:1800.07 req/sec
  • Grav 1.7.29 PHP 7.4 のベンチマーク結果:1848.02 req/sec
  • Grav 1.7.29 PHP 8.0のベンチマーク結果:1931.72 req/sec
  • Grav 1.7.29 PHP 8.1 のベンチマーク結果:2137.43 req/sec 🏆

Gravでは、議論の余地なくPHP 8.1が勝者です。PHP 8.0がこれに続きます。

比較的新しいCMSであるため、WordPressに比べて小さな市場シェアしかありません。そのため逆に、古いバージョンのPHPサポートをすぐに落とすことができます。これは新しいCMSの最も大きな強みの一つでしょう。

OctoberCMS 1.3.1

OctoberCMSは、Laravel PHPフレームワークをベースにした、元々は無料でオープンソースのCMSプラットフォームです。2021年にライセンスモデルを変更し、有料プラットフォームとなりました。Laravelのパワーを使って動的なウェブサイトを作ることができるため、開発者の間で人気があります。W3Techsによると、OctoberCMSはウェブサイトの0.1%で使用されています。

October

OctoberCMSのテストサイト構築では、デフォルトのデモテーマを使用しました。レスポンシブ対応のテーマで、レイアウトがしっかり決まっています。s

テストしたOctoberCMSのページ
テストしたOctoberCMSのページ
  • テストURL /
  • テーマ: デモテーマ
  • メモ:テストしたページには、ロゴ、ナビゲーションメニュー、テキストセクション、コードエンベッドなど、多くの要素があります。パフォーマンス向上に関するドキュメントに従い、可能な限り効率的に動作するように設定しました。この記事を書いている時点では、OctoberCMSの利用にはPHP 7.2以上が必要であり、PHP 8.1にはまだ対応していません。
  • イメージの取得元 OctoberCMS公式サイト
 OctoberCMS 1.3.1のPHPベンチマーク
OctoberCMS 1.3.1のPHPベンチマーク

ベンチマークの結果

  • OctoberCMS 1.3.1 PHP 7.2 のベンチマーク結果:417.13 req/sec
  • OctoberCMS 1.3.1 PHP 7.3 のベンチマーク結果:458.63 req/sec
  • OctoberCMS 1.3.1 PHP 7.4 のベンチマーク結果:532.65 req/sec
  • OctoberCMS 1.3.1 PHP 8.0 のベンチマーク結果:640.08 req/sec 🏆
  • OctoberCMS 1.3.1 PHP 8.1 のベンチマーク結果:非対応🚫

ここでは、PHP 8.0が明らかな勝者です。OctoberCMSのPHP 8.0では、PHP 7.4よりも1秒あたり20.16%多くのリクエストが処理されました。次のメジャーアップデートでPHP 8.1がどのようなパフォーマンスを発揮するのか、ぜひ見てみたいものです。

Laravel 8.80.0

Laravelは、現在最も人気のあるPHPフレームワークです。Taylor Otwell氏によって構築され、2011年6月にリリースされました。Laravelを使用して、CMS、ECサイト、アプリケーション等々、あらゆるウェブアプリを開発できます。

Laravel logo

Laravelのベンチマークテストには、プレーンなHTMLテーマを使用しました。

Laravelの創設者であるTaylor Otwell氏が以前に指摘したように、Laravelと他のPHPフレームワークを比較するためにこのベンチマーク結果を使用すべきではありません。ここでの目的はすべての条件が同じ場合に、異なるPHPバージョンでLaravelがどのように動作するかを見ることにあります。

テストしたLaravelのページ
テストしたLaravelのページ
  • テストURL /(ホームページ)
  • テーマ: プレーンHTML
  • メモ:テストしたページには、必要不可欠なHTML要素が多く含まれています。本格的なウェブアプリケーションではありません。LaravelではなくPHPをベンチマークすることが目的です。
  • イメージの取得元: Laravel公式リポジトリ
Laravel 8.80.0のPHPベンチマーク
Laravel 8.80.0のPHPベンチマーク

ベンチマークの結果

  • Laravel 8.80.0 PHP 7.2 のベンチマーク結果:非対応🚫
  • Laravel 8.80.0 PHP 7.3のベンチマーク結果:2278.86 req/sec
  • Laravel 8.80.0 PHP 7.4 のベンチマーク結果:2303.23 req/sec
  • Laravel 8.80.0 PHP 8.0 のベンチマーク結果:2376.40 req/sec🏆
  • Laravel 8.80.0 PHP 8.1 のベンチマーク結果:2002.94 req/sec

Laravelが最新のPHPバージョンに対応しているのは嬉しいものです。PHP 8.0はLaravelでも文句なしのチャンピオンで、PHP 8.1が最下位でした。改善の余地があります。もしかしたら、リリースされたばかりのLaravel 9で面白い結果が出るかもしれませんが、それは次回のベンチマークに期待しましょう。

Symfony 5.4.2

Symfonyは、繰り返し使えるPHPコンポーネントと、ウェブアプリ、API、マイクロサービス、ウェブサービスを構築可能なPHPフレームワークのセットです。フリーのオープンソースソフトウェアで、2005年10月22日にリリースされました。

Symfony
Symfonyは6.xバージョンをリリースしていますが、PHP 8.0以降しかサポートしていません。したがって、PHPのベンチマークには5.4.2を使う方が適切であると判断しました。

Symfonyは、デモアプリケーションと一緒にインストールすることができます。Symfonyおよび様々な機能の最適な使い方を確認できる、リファレンスCMSアプリケーションです。Symfonyのベンチマークテストでは、このデモアプリケーションのホームページを使用しました。

テストしたSymfonyのホームページ
テストしたSymfonyのホームページ
  • テストURL /
  • テーマ: Symfony Demo
  • メモ:テストしたページにはヘッダーがあり、ロゴ、ホームページへのリンク、検索ウィジェット、言語変換ウィジェットが含まれています。またサイドバーには、小さなテキストボックス、「コードを表示する」「ブログ記事のRSS」などのウィジェットがあります。
  • イメージの取得元: Symfony公式リポジトリ
Symfony 5.4.2のPHPベンチマーク
Symfony 5.4.2のPHPベンチマーク

ベンチマークの結果

  • Symfony 5.4.2 PHP 7.2 のベンチマーク結果:非対応🚫
  • Symfony 5.4.2 PHP 7.3 のベンチマーク結果:416.18 req/sec
  • Symfony 5.4.2 PHP 7.4 のベンチマーク結果:434.95 req/sec
  • Symfony 5.4.2 PHP 8.0のベンチマーク結果:443.79
  • Symfony 5.4.2 PHP 8.1のベンチマーク結果:524.78 req/sec 🏆

Symfonyでは、PHP8.1とそれ以外では大きな差があります。たとえば、PHP 8.1 は PHP 7.4 よりも20.65%高速です。

symfonyは、PHP 8.1を利用することで、PHP 7よりも1秒あたり20.65%多いリクエストを処理できます。 ⏩⚡ クリックでつぶやく

CodeIgniter 4.1.8

CodeIgniterは、フットプリントの小さなPHPフレームワークです。例えば、最新バージョンのダウンロードサイズは1.2MBです。EllisLabにより開発、ブリティッシュ・コロンビア工科大学により維持されています。そのサイズにもかかわらず、CodeIgniterを使ってフル機能のウェブアプリを開発することができます。

CodeIgniter logo

CodeIgniterのベンチマークテストとして、公式チュートリアルを使用しデモアプリケーションを構築しました。プレーンなHTMLテーマを使用し、大量の「ニュース」を出力します。

テストしたCodeIgniterのニュースページe
テストしたCodeIgniterのニュースページe
  • テストURL /news/
  • テーマ: プレーンHTML
  • メモ:テストページには、ニュース項目(タイトル、コンテンツ、メインコンテンツへのリンクつき)があります。データベースには1つのテーブル「news」があり、1000行のニュース項目があります。テーブルにはカラム「id」「title」「slug」「body」があります。ページはデータベースに接続し、テーブル上のすべての投稿を表示します。CodeIgniterアプリケーションには、このコンテンツを表示する1つのルートと1つのコントローラーが含まれています。
  • イメージの取得元: CodeIgniter.com公式サイト
CodeIgniter 4.1.8のPHPベンチマーク
CodeIgniter 4.1.8のPHPベンチマーク

ベンチマークの結果

  • CodeIgniter 4.0.4 PHP 7.2 のベンチマーク結果:非対応🚫
  • CodeIgniter 4.0.4 PHP 7.3 のベンチマーク結果:非対応🚫
  • CodeIgniter 4.0.4 PHP 7.4 のベンチマーク結果:1907.33 req/sec
  • CodeIgniter 4.0.4 PHP 8.0 のベンチマーク結果:1770.33 req/sec
  • CodeIgniter 4.0.4 PHP 8.1 のベンチマーク結果:1920.51 req/sec 🏆

CodeIgniterではPHP 8.1が最も速く、PHP 8.0よりも毎秒8.48%多くのリクエストを処理しました。しかし、PHP 7.4がPHP 8.0よりもずっと優れたパフォーマンスを見せたのには驚きです。これは、PHP 8.1とほぼ同程度です。

CakePHP 4.3.4

CakePHPは、PHPアプリケーション開発用のオープンソースウェブフレームワークです。よりシンプルで、より速く、より少ないコードでのウェブアプリ構築を約束しています。

CakePHP logo

CakePHPのベンチマークテストでは、デフォルトのランディングページを使用しました。データベースと接続した上での、テスト実施となっています。

テストしたCakePHPのホームページ
テストしたCakePHPのホームページ
  • テストURL /(ホームページ)
  • テーマ:プレーンHTML
  • メモ:テストページは、わずかにスタイリングを施した単純なHTMLのランディングページです。CakePHPのインストールに関する簡単な情報が記載されています。
  • イメージの取得元: CakePHP公式リポジトリ
CakePHP 4.3.4のPHPベンチマーク
CakePHP 4.3.4のPHPベンチマーク

ベンチマークの結果

  • CakePHP 4.2.2 PHP 7.2 のベンチマーク結果:743.46 req/sec
  • CakePHP 4.2.2 PHP 7.3 のベンチマーク結果:874.69.28 req/sec
  • CakePHP 4.2.2 PHP 7.4 のベンチマーク結果:954.30 req/sec
  • CakePHP 4.2.2 PHP 8.0のベンチマーク結果:973.02 req/sec 🏆
  • CakePHP 4.2.2 PHP 8.1 のベンチマーク結果:918.21 req/sec

驚いたことにCakePHPでは、PHP 8.0が最も良い結果でした。ただし、すべてのベンチマークは僅差で、はっきりと勝者と呼ぶには至りません。PHP 8.1もPHP 8.0よりわずかに5.6%遅いだけです。将来のCakePHP 4.3.xのアップデートで、この問題は解決されるかもしれません。

Craft CMS 3.7.30.1

Craft CMSは、使いやすさを重視したオープンソースのコンテンツ管理システムです。バックエンドを完全にカスタマイズできます。様々なコンテンツタイプに対応したカスタムフィールドレイアウトをデザインするツールが組み込まれていて、非常に簡単にカスタムコンテンツタイプを処理できます。

カスタムECストアを検討されている方は、Craft Commerceをチェックしてみてください。また、Craft CMSのローカル開発環境としてCraft Nitroもあります。

Craft CMS logo

Craft CMSのベンチマークには、デフォルトのadminログインページを使用しました。サイトバックエンドにアクセスするためのフォームがある、シンプルなログインページです。

 テストしたCraft CMSのログインページ
テストしたCraft CMSのログインページ
  • テストURL /admin/login/
  • テーマ:デフォルト
  • メモ: テストページは、シンプルなログインページです。
  • イメージの取得元: Craft CMS公式リポジトリ
Craft CMS 3.7.30.1のPHPベンチマーク
Craft CMS 3.7.30.1のPHPベンチマーク

ベンチマークの結果

  • Craft CMS 3.5.17.1 PHP 7.2のベンチマーク結果:75.32 req/sec
  • Craft CMS 3.5.17.1 PHP 7.3のベンチマーク結果:74.69 req/sec
  • Craft CMS 3.5.17.1 PHP 7.4のベンチマーク結果:81.68 req/sec
  • Craft CMS 3.5.17.1 PHP 8.0のベンチマーク結果:417.21 req/sec
  • Craft CMS 3.5.17.1 PHP 7.3のベンチマーク結果:74.69 req/sec
  • Craft CMS 3.5.17.1 PHP 8.1のベンチマーク結果:443.18 req/sec 🏆

Craft CMSではPHP 8.1がトップになりました。以前のベンチマークとは異なり、Craft CMS は PHP 8.0 と PHP 8.1 の両方をサポートするようになりました。

Kirby 3.6.1.1

Kirbyは、コンテンツの作成と公開にフォーカスしたフラットファイルCMSです。ソースコードは公開されていますが、ネット上のサーバーでの利用は、無料ではありません。Kirbyでは、フォーム、記事、ギャラリー、スプレッドシートなどを使用して編集インターフェースをカスタマイズできます。

Kirby logo

KirbyをStarterkitでインストールすると、完全に機能するデモサイトを構築できます。ベンチマークには、会社概要ページを使用しました。

テストしたKirbyのページ
テストしたKirbyのページ
  • テストURL /about/
  • テーマ: Starterkit
  • メモ:テストしたのは、アイキャッチ画像、テキスト、ウィジェット、ヘッダー、ナビゲーションメニュー、ソーシャルメディアアイコン、フッターを含む概要ページです。
  • イメージの取得元: Kirby公式サイト
Kirby 3.6.1.1のPHPベンチマーク
Kirby 3.6.1.1のPHPベンチマーク

ベンチマークの結果

  • Kirby 3.6.1.1 PHP 7.2のベンチマーク結果:非対応🚫
  • Kirby 3.6.1.1 PHP 7.3のベンチマーク結果:非対応🚫
  • Kirby 3.6.1.1 PHP 7.4のベンチマーク結果:3326.72 req/sec
  • Kirby 3.6.1.1 PHP 8.0のベンチマーク結果:3514.96 req/sec🏆
  • Kirby 3.6.1.1 PHP 8.1のベンチマーク結果:3922.77 req/sec 🏆

Kirbyのベンチマークでは、PHP 8.1が特大ホームランを放ちました。また、特筆すべきことに、テストしたすべてのPHPプラットフォームで、Kirbyが1秒あたりのリクエストを最も多く処理しました。これはリンゴとオレンジの比較のように意味のないものですが、最多であることは事実です。Kirbyの最大の欠点は、無料で使えないことです。

Flarum 1.2.0

Flarumは、オンラインフォーラム構築のための、無料かつオープンソースのフォーラムソフトウェアです。

Flarum Logo

デモサイトとあわせてFlarumをインストールします。また、数段落のテキストを含む3つのスレッドを追加しました。

Flarumを使ったテストページ
Flarumを使ったテストページ
  • テストURL/(ホームページ)
  • テーマ:デフォルト
  • メモ:テストしたページは、フォーラムのトップページで、ヘッダー、ロゴ、検索ウィジェット、注目のテキスト、ナビゲーションメニュー、通知アイコン、サイドメニュー、ディスカッションスレッド一覧、その他のウィジェット、フッターがあります。Flarumの最新バージョンはまだPHP 8.1をサポートしていないので、ベンチマークを実施できませんでした。
  • イメージの取得元:Flarum公式サイト
Flarum 1.2.0 のPHPベンチマーク
Flarum 1.2.0 のPHPベンチマーク

ベンチマークの結果

  • Flarum 1.2.0 PHP 7.2のベンチマーク結果:非対応🚫
  • Flarum 1.2.0 PHP 7.3のベンチマーク結果:120.21 req/sec
  • Flarum 1.2.0 PHP 7.4のベンチマーク結果:122.06 req/sec 🏆
  • Flarum 1.2.0 PHP 8.0のベンチマーク結果:119.67 req/sec
  • Flarum 1.2.0 PHP 8.1のベンチマーク結果:非対応🚫

Flarumは、私たちのPHPベンチマークテストに、今回初めて登場しました。人気のPHPフォーラムソフトウェアなので、結果がどうなるかテストしてみることにしました。FlarumではPHP 7.4が最高のパフォーマンスを発揮しましたが、ベンチマークを行った他のすべてのPHPバージョンでもほぼ同じ結果です。

KinstaでのPHP 8.1へのバージョンアップ

PHP 8.1では、多くのユニークな機能が導入されました。その中には以前のバージョンのPHPと互換性がない、根本的な変更も含まれています。

サイトのすべての機能がPHP 8.1で問題なく動作するのであれば、バージョンアップしない理由はありません。上のベンチマークの結果からもメリットは明らかでしょう。

念のため繰り返しますが、すべてのKinstaのお客様には、当社独自の自己修復データベース構成とあわせて、8.0, 8.1, 8.2をご利用いただけます。

KinstaはPHP 8.0、8.1をサポート
KinstaはPHP 8.0、8.1をサポート

サードパーティ製プラグインの非互換性が原因でサイトが壊れること(起こる可能性は常に介在します)を心配されている方には、ステージングサイトをご用意しています👍

ステージングサイトを使用すれば、本番サイトが壊れることを心配せずに何度でも、無限にテストすることができます。すべてが完璧に動作することを確認できたら、ワンクリックで、変更を本番サイトに反映できます。

ベンチマーク結果のまとめ

上位プラットフォームを対象としたベンチマーク結果のまとめ
上位プラットフォームを対象としたベンチマーク結果のまとめ

ベンチマーク結果を見ると、ほとんどのPHPプラットフォームと構成においてPHP 8.1がリードしており、僅差でPHP 8.0が続いています。

以下は、PHPベンチマーク結果からの考察です。

  • WordPressに関しては、PHP 8.1がすべてのベンチマーク(標準のWordPress 5.6、WooCommerceで最速でした。Easy Digital DownloadsはまだPHP 8.1をサポートしていませんが、同様の性能向上が期待できます。
  • WordPressを使用していて、テーマやプラグインがPHP 8.1と互換性があるなら、PHPを8.1にバージョンアップしない理由はありません。PHP 8.1がもたらすパフォーマンスの向上を実感できるでしょう。
  • PHP 8.0は、ウェブアプリ構築用のPHPフレームワークとして最も人気のあるLaravelフレームワークでも最速でした。 Laravel 9は、ベンチマーク実施時点ではまだリリースされていません。今後のベンチマークで使用することにします。
  • 使用しているプラグインやテーマがPHP 8.1と互換性がない場合は(8.0は言うまでもなく)、開発者に連絡し、その旨を伝えることをお勧めします。
  • PHP 7.4のサポートは2022年後半に終了するため、できるだけ早くPHP 8.0以上にサイトを移行する計画を立ててください。
  • PHP 5.6全盛期に現れたPHP 7.0のように、PHP 8.0はPHPの新たな夜明けの立役者です。PHP 8.1は、その流れを受け継いでいます。将来のPHP 8.xバージョンでは、さらにパフォーマンスとセキュリティが最適化されることを期待します。
  • PHP 8.xは、JITを有効化した状態でテストしていません。PHPの新しいJITコンパイラは、WordPressのようなアプリケーションのパフォーマンスでは大きなメリットをもたらしませんが、これの使用がどのような効果をもたらすかは興味深く、今後観察予定です。
  • もしも、お使いのレンタルサーバーが、PHPの新しいバージョンに追いついていなければ、移行を考えてみてはいかがでしょうか。
  • 前述したように、ウェブサーバーの環境をPHP 8.0、8.1にアップデートする前に、サイトのテストを十分に行ってください。
  • 最新のPHPにバージョンアップする以外にも、WordPressユーザーは他の多くのパフォーマンス向上テクニックを使用して、サイトをさらに高速化できます。それらすべてを詳細ガイドとして、WordPressサイトを高速化する方法にまとめました。

様々なPHPプラットフォームのベンチマークは、とても楽しい作業でした。私たちはPHP 8.1には興奮を隠せません。皆さんも同じであることを願っています。

ベンチマークやPHPバージョンアップについてご意見がありましたら、ぜひお聞かせください。以下のコメント欄をご利用ください!

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.