PHP8.1が正式リリースされていたのをすっかり忘れていました。今回は8.0から一部処理の速度が上がっているらしいですね。WordPressでどれくらい効果があるのか検証してみます。
検証環境
before | after | |
---|---|---|
OS | CentOS Stream 8 | |
PHP | 8.0.14 | 8.1.1 |
WordPress | 5.8.3 |
PHPはOS標準のPHP7系ではなくremiリポジトリからPHP8.0を導入済です。
また記事にはしていませんがCentOS6のサポート終了につき本ブログのサーバをCentOS8へ、またCentOS8も2021年末でサポート終了のためCentOS Stream 8に切り替えました。いろいろ考えましたがWordPress程度ならRHEL8との互換性を気にする必要もありませんし。
PHP8.1導入前の準備
アップデート前にPHP8.0のバージョン表示、apachebenchの取得、現在インストールされているPHPパッケージのバージョンを出力しておきます。
# php -v PHP 8.0.14 (cli) (built: Dec 16 2021 03:01:07) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.14, Copyright (c) Zend Technologies with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies # ab -c 1000 -n 1000 https://192.0.2.128/ Requests per second: 75.43 [#/sec] (mean) Time per request: 13256.579 [ms] (mean) Time per request: 13.257 [ms] (mean, across all concurrent requests) Transfer rate: 2091.53 [Kbytes/sec] received ## dnf list installed |grep php gd3php.x86_64 2.3.3-4.el8.remi @remi-safe oniguruma5php.x86_64 6.9.7.1-1.el8.remi @remi-safe php.x86_64 8.0.14-1.el8.remi @remi-modular php-cli.x86_64 8.0.14-1.el8.remi @remi-modular php-common.x86_64 8.0.14-1.el8.remi @remi-modular php-fpm.x86_64 8.0.14-1.el8.remi @remi-modular php-gd.x86_64 8.0.14-1.el8.remi @remi-modular php-mbstring.x86_64 8.0.14-1.el8.remi @remi-modular php-mysqlnd.x86_64 8.0.14-1.el8.remi @remi-modular php-opcache.x86_64 8.0.14-1.el8.remi @remi-modular php-pdo.x86_64 8.0.14-1.el8.remi @remi-modular php-pecl-zip.x86_64 1.20.0-1.el8.remi.8.0 @remi-modular php-sodium.x86_64 8.0.14-1.el8.remi @remi-modular php-xml.x86_64 8.0.14-1.el8.remi @remi-modular
PHP8.1アップデート開始
まずはPHP8.1を利用可能か確認します。remi-8.1の表記があるので行けますね。
# dnf module list php CentOS Stream 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 [e] common [d] [i], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language
モジュール切り替えの前に現在のdnf PHP8.0モジュール情報のリセットを行います。
# dnf module reset php -y 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== モジュールの再設定中: php トランザクションの概要 ======================================================================================================================== 完了しました!
そしてdnf PHP8.1モジュールを有効化します。
# dnf module enable php:remi-8.1 依存関係が解決しました。 ======================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ ======================================================================================================================== モジュールストリームの有効化中: php remi-8.1 トランザクションの概要 ======================================================================================================================== 完了しました!
※2022/11/2 -tオプションを削除しました
いよいよPHP8.1へのアップデートを実施。
ここではPHPが含まれれるパッケージを直指定していますが、phpとphp-fpmの2つを指定しておけば、他は依存関係としてアップデートリストに上がってくるはずです。
# dnf update php php-cli php-common php-fpm php-gd php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-zip php-sodium php-xml アップグレード済み: php-8.1.1-1.el8.remi.x86_64 php-cli-8.1.1-1.el8.remi.x86_64 php-common-8.1.1-1.el8.remi.x86_64 php-fpm-8.1.1-1.el8.remi.x86_64 php-gd-8.1.1-1.el8.remi.x86_64 php-mbstring-8.1.1-1.el8.remi.x86_64 php-mysqlnd-8.1.1-1.el8.remi.x86_64 php-opcache-8.1.1-1.el8.remi.x86_64 php-pdo-8.1.1-1.el8.remi.x86_64 php-pecl-zip-1.20.0-1.el8.remi.8.1.x86_64 php-sodium-8.1.1-1.el8.remi.x86_64 php-xml-8.1.1-1.el8.remi.x86_64 完了しました!
アップデート完了後にPHPのバージョンを確認します。8.0から直接アップデートしたのでOPcacheも引き継がれています。
またインストール状況を見ながらphpinfoを連打してみましたが、ダウンタイムほぼ0で切り替えることができました。この方法ならsystemctl enable php-fpmなどの設定は不要です。
# php -v PHP 8.1.1 (cli) (built: Dec 15 2021 02:00:45) (NTS gcc x86_64) Copyright (c) The PHP Group Zend Engine v4.1.1, Copyright (c) Zend Technologies with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
PHP8.1へアップデートの効果は次回へ
長くなりましたので効果確認は次回へ。