PHP8の追加機能「JIT(ジャストインタイム)コンパイラー」で高速処理

WordPress6.1からキャッシュ関係の厳しいチェックを解決するために、PHPの機能からデータ部分のキャシュ処理による高速化により、WordPressのヘルスセンターの確認で「すべて問題なく作動中!」となった。但し、ホスティングサービスに関するプラグインは利用しないので、そのインフォメーションは非表示にした。

server

Just-In-Time (jit) compiler

php8以降に追加された機能でデータキャシュ等の処理を高速化


PHP8のリリースで「JIT(ジャストインタイム)コンパイラー)」と言う機能が追加、この機能によるパフォーマンスで環境により左右されるようだけど、約1.5~3倍程度高速処理されるらしい。

PHP8-OPcacheの追加機能JITついてJITはJust-In-Timeの略でプログラムの実行時にソースコードをネイティブコードへコンパイルを行う。これをメモリに保持しておき、同じリクエストが来た場合にコンパイル済みコードを実行して処理を高速化。JIT は opcache が有効になっている場合にのみ機能する。これはOPcacheで「opcache.enable=1」に設定されている必要があり、又、JIT自体を有効にするには、「opcache.jit_buffer_size」を指定する必要がある。
*ソースコードからバイトコード(Opcode)へ変換し、変換されたOpcodeをZend Engineが解釈しネイティブコード(機械語)へ変換

JITを知ったのは、OPcacheを有効化するとApacheで「キャシュがオーバフロー」したとの警告が出た為で、原因を調べるとOpcacheを有効化するためには「opcache.jit」の設定も必要になる。取り合えず最低限必要な「opcache.jit=off」にしてからベーシックな設定を施した。

zend_extension = opcache
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=4
opcache.max_wasted_percentage=5
opcache.use_cwd=1
;opcache.jit=off
[JITの設定部分]
opcache.jit = 1255
opcache.jit_buffer_size = 100M
;opcache.jit = on
*opcache.jit_buffer_size=100M ←変更
*opcache.jit=1255 ←(on)の替りにディフォルト値として。

キャッシュ用Zend ExtensionsであるOPcacheの機能の一部として実装されている。ようは「opcache.jit」のプログラムに適した設定をすることで「OPcacheより高速化が見込めるキャッシュ機能」となるようだ。ん~、難しい!

PHP8.1にAPCuの導入とOPcacheを設定してPHPサーバの高速化

XAMPPのPHP8.1.12はZend OPcacheにてコードレベルのキャッシュを管理、APCuはデータキャッシュを管理してPHPの処理が高速になる。

自宅サーバ

APCu OPcache

[インストールと設定]

●オブジェクトデータキャッシュのapcu
●ネイティブコードキャッシュのZend OPcache

2つのレイヤーで高速化を行い、双方ともにwindows環境でも設定を行うことが可能。

APCuのインストール

PHPの高速化エクステンションであるapcは既にサポートされてないので、APCuがPHPでコンパイルされたデータをキャッシュしてくれる。1度キャッシュしたものは2回目はキャッシュから読み込むのでコンパイル処理が省かれ、PHP処理が高速になる。

https://pecl.php.net/package-stats.php
*peclからダウンロードすることが可能。
*xamppで.ZIPを解凍してファイル内のphp_apcu.phpをphp\ext内にコピーすればインストールは完了。

APCuの設定と有効化
\xamp\php\php.iniのdynamics ExtensionsとAPCuの設定を追記して有効化。

1) php_apcu.phpを\xampp\php\php.iniの[dynamics Extensions]に追記
extension=apcu
2) [opchache]の次辺りに追記
[APCu]
apc.shm_size=128M
apc.ttl=86400
apc.gc_ttl=86400
*コマンドプロンプトで設定状況を確認
> php -i | egrep 'apc|opcache'

APCu コントロールパネル
GitHubからダウンロード
https://github.com/krakjoe/apcu/archive/

ダウンロードした拡張子(.php.txt)の.txtを削除して\xampp\htdocsに入れる。

>\xampp\apcu-master\apc.php
defaults('ADMIN_USERNAME','apc'); // Admin Username
defaults('ADMIN_PASSWORD','password'); // Admin Password - CHANGE THIS TO ENABLE!!!
↓変更
defaults('ADMIN_USERNAME','ユーザ名'); //
defaults('ADMIN_PASSWORD','パスワード'); //

OPcacheの設定と有効化

1) [Dynamic Extensions]
;extension=opchache ←(;)を外して有効にする。
2) [opcache] ←下記の(;)を外して有効にする。
;opcache.enable=1
;opcache.enable_cli=1
;opcache.memory_consumption=256 ←2倍
;opcache.interned_strings_buffer=4
;opcache.max_wasted_percentage=5
;opcache.use_cwd=1
*コードの変更にはキャッシュを使わない。
*opcache.jit=off ←必要なら追記

OPcacheコントロールパネル

https://github.com/krakjoe/apcu/archive/
ダウンロードしたapc.phpをC:\xampp\htdocsにコピーすればインストールは完了。
*環境にもよるが、0.5秒程度変わる。
*パネル上のAPCuのキャッシュ有効で緑の部分が減る。


Zend OPcacheはコードのキャッシュのみでオブジェクトデータはキャッシュしないので、php.iniでキャッシュしてくれる最大サイズと、キャッシュの有効期間を設定する。

注意:設定終了後、XAMPPのApacheを再起動とerror.logでキャッシュ関係のエラー(有る・無い)を確認する事。

MemcachedのサーバーをWindows10&クライアントをXAMPPのPHPへ導入

Server

Memcachedサーバとクライアント

[Windows10 PHP8.1.12]


1)WordPress側のインストールと設定
Windows10のmemcachedサーバーをダウンロードしてProgram Fileに解凍後、Windows環境変数に登録。

最低限のコマンド:
>memcached\memcached.exe -d install ← 本来はサービスに登録できる。
>memcached\memcached.exe -d start ← 起動、Windowsの再起動で自動?
>memcached\memcached.exe -d unstall ← サービスに登録を削除。
>memcached\memcached.exe -d stop ← 停止、再起動でデータの削除。
>memcached\memcached.exe -m 000 ← 必要ならばメモリサイズの指定(000MB)
*-dはバックグラウンドで操作
Memcachedサーバの起動確認:
>telnet localhost 11211
>stats ←ステータスの表示
>stats settings ← 設定したステータス
>quit ←終了

自宅サーバーにはPHP側に必要なホスティングサービスが無いので、PC上でデータ管理が出来ないと言うこになるのでMemcachedサーバの導入が最低限の手段。又、Windows上でデータ管理が出来ても障害が起きた場合の対応が出来ないので、MemcachedサーバはPCの再起動で全てのデータを削除出来るのが良い。

2)WordPress側にクライアントのインストールと設定
PHP8.1のphp_memcache—.zipをダウンロードしてXampp内に解凍する。解凍した「php_memcached.phpを\xampp\php\extにコピー。又、「php_memcached.php」をphp.ini 内Dynamics Extensionに追記。

[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
memcache.default_port = 11211
*「Opcache」の次辺りに設定を追記

Memcachedサーバに関しては、Windowsの環境変数に登録して基本設定だけで管理。

自宅サーバをXAMPP8.2からXAMPP8.1.12へ

XAMPP8.2へバージョンアップした自宅サーバーをXAMPP8.1.12へと再インストールした。原因がPHP8.2の問題なのか分からないけど、Apache、phpMyAdminでの警告、imagickがインストールされない等、余り気にしなくても良いらしいけど気になる。取り合えす以前のPHP8.1系のバージョンXAMPP8.1.12したところ、すべての警告やimagickのインストール等が解決!

注意:XAMPPのバージョンアップの場合、MYSQLのオリジナルの DATA内へwordpress.sqlでデータを(インポート)戻す事。

自宅サーバをXAMPP8.2へバージョンアップ

新年に合わせてXAMPP8.2へバージョンアップを試みた。

Server

XAMPP8.2のインストール

 

昨年までがPHP8.1なのでPHP8.2にバージョンアップすると不都合が発生するかを調べたところ、3つの問題が起きたけど大した不都合ではなかった。

1.ワードプレスでは、モジュール imagick がインストールされていないか、無効化されている問題が発生したので新たにインストールしたが、Wordpressのサイトヘルスに反映されない。
2.Apacheではhttpd-ssl.phpの設定に問題があったので修正して解決した。
3.php.iniのモジュールopcacheを有効にするとエラーを起こしてapacheが起動しない。


上記の問題は恐らくPHP8.2 の機能的な問題かな?と言うことで暫くの間様子を見る事にした。

追記phpMyAdminでも、「環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。」と言う警告が出ていた。以前は「代わりにデータベースの操作タブを使って設定することもできます。」で設定ができたが今回は設定が出来なかった。MySQLのDATA修復も試みたが直らないので、XAMPP8.2を再インストールしたが相変わらず警告が出る。原因不明!?

新たに自宅サーバをXAMPP 8.1.10へアップグレード

XamppのHPに訪れると既に真新しいXampp 8.1.10となっていたので、心機一転この自宅サーバをアップグレードすることにした。

<アップグレード>

XAMPP 8.1.10

 

[ApacheFriends XAMPP Version 8.1.10]

Important! PHP in this package needs the Microsoft Visual C++ are installed on your system.

 

  Apache 2.4.54  MariaDB 10.4.24  PHP 8.1.10
  phpMyAdmin 5.2.0  XAMPP Control Panel Version 3.3.0
 *メール及びFTPサーバは更新無し
  Mercury Mail Transport System 4.63  FileZilla FTP Server 0.9.41

 

「phpMyAdmin」で警告が出た2点

1] phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。代わりにデータベースの操作タブを使って設定することもできます。
2] 設定ファイルの中に記述されているパスフレーズ(blowfish_secret)の長さが正しくありません。 32 バイトでなければなりません。
*案の定config-inc.phpがShift-JISだったのでUTF-8に、秀丸でエンコードの変換にて解決した。

前回の更新では少しばかり躓いたけど、以前の記事を再読してアップグレードしたところ今回は問題なくスムーズに更新できた。

一昔前のWebカメラ Logicool HD Webcam C270

ほぼ骨董品のような感じの無線WiFiのカメラは、昔購入してから顔認証用とか動画に音声を入れるためのマイク代わりに利用してた。今でもたまに動画に音声をいれたり、Line用のマイク代わりにしてる。古いPCに記録した音声付き動画の多くをハードデスクが壊れて失ったけど、フロッピーに別保存した少しばかりの動画は貴重な思い出の品なのでCDに保管してる。思い出したようにWindowsPCでこれらの動画を観て楽しんでるけど、このWebcam C270で録音した音声はよく聞き取れる。

このWebカメラは今でも人気があるようでAmazonで調べると、「安くて良かった」とか「画像も鮮明で、音声もしっかり聞き取れる」とか、このWebカメラは20012年8月にamazonで1,455円で買ったけど、現在でもほぼ同額で販売しているようだ。

WindowsPCに現役で使用してる無線スピーカーCreative D100

数年前中古のPC2台と一緒に無線スピーカー「Creative D100」を購入した理由は、有線のスピーカーだと常にデスク上でスペース的にも置き場所を決めるのが一苦労だった。今では、デスク上を広々使いたい時など後ろの棚に置いたりして使用してる。

「Creative D100」に関する設置前の準備は、電池(単三4個)又は、付属のコードで電源を入れる。後は「Bluetooth」が正しく設定されていることを確認してから下記に進む。

無線スピーカー「Creative D100」

最初にすべきは。。。
1.Bluetooth Planexの [BT-Micro4] をUSBに差し込む、するとWindows10が自動認識してWindows10の標準ドライバーを勝手にインストールしてくれる。
2.[コントロールパネル]→[ハードウェアとサウンド]→[ディバイスとプリンター]へ移動して、[CSR8510 A10] のアイコンを右クリックして「Bluetooth設定→オプション」を開き、Bluethoothのアイコンを「通知領域に表示する」にチェックをいれると準備完了。

次に「設定」の「デバイス」へ移動して。。。
1.Bluetoothを「オン」にするとCreative D100とペアリングできる体制になるので、Creative D100のスイッチを「オン」にして接続ボタンを押し続けると、「ピー」と鳴っるので接続ボタンを離してペアリング完了、その間2~3秒程度。
2.その後の操作は、「隠れてるインジケーターの表示」をオープンしてBluetoothボタンをダブルクリック、「Bluetoothとその他のディバイス」のベアリング済みCreativeD100の接続をON/OFFでOK!。

これで、約10m以内であればどこにでも無線スピーカーを置くことができるし、家に誰もいない間の一時を、無線スピーカーで好きな音楽を聴きながら「うとうと」や、「Gyao!」で映画やドラマを迫力ある音声で聞けるのだ。

驚き!iPhone11の「Safari」だけだけど、「ハートのスパム」が写真に張り付いた!!

3月中頃の投稿記事(Diary)の中で、iPhone11のSafariから見た記事の写真上に「ハートのスパム」が張られていたのを気が付いて急いで記事内の写真を削除した。何日か経ってから再度写真を添付して確認、写真だけを見てると正常だけど、画像をクリックして浮かせて見たところハートがでかでかと表示され、今度は写真自体が「ハートのスパム」で追いかぶさって消えない状態になった。

iPhone11のSafari上に

その間、WordPressの投稿記事に対するファイルやその写真を調べたり、iPhone11の「Google」からもチェックしたが「ハートのスパム」が張り付いてない。とにかく記事上の写真を削除して、その削除した理由を書いた記事に変更した。

たまにネットで「ハートのスパム」に関係して調べているが、未だ分からないのはなぜiPhone11のSafariだけに投稿記事の写真上に張り付いたのか?謎だね。

3月中旬の投稿記事で、WordPressの再インストール後まだ記事にしてなかったので再度投稿することにした。

WindowsでXAMPPを最新版(ApacheFriends XAMPP)へアップデートする時の注意点

【今回のアップデート】
(XAMPP Version 8.1.2

   Apache 2.4.52
   MariaDB 10.4.22
   PHP 8.1.2 (VS16 X86 64bit thread safe) + PEAR
   phpMyAdmin 5.1.1
   OpenSSL 1.1.0g

最新のXAMPPへアップデート

―windows版Xamppへアップデートする時の注意点-

【最新版へアップデートする手順】

 1.必要なファイルのバックアップを取る
 2.現在のXAMPPをアンインストール
 3.最新版のXAMPPをインストール
 4.バックアップしていたデータで復元する

【必要なファイルのバックアップ】

アンインストールする前に必ず残すべきXampp関連ファイルのバックアップ。

X:¥xampp¥htdocs ←httpd.conf、httpd-ssl.conf、httpd-vhosts.conf
X:¥xampp¥mysql¥data ←MySQLデータベース
X:¥xampp¥FileZillaFTP ←設定ファイル全て
X:¥xampp¥MercuryMail ←設定ファイル全て
その他、ライブラリなどインストールしたファイル
X:\xampp\htdocs\wordpress ←全て

簡単なアップデートだと思うけど、実際はアンインストールしてからが要注意、うっかり手順を間違えると順調にアップデートできない。

1.「MySQL」のルート&パスワードを設定→phpMyAdminを開いて空の「WordPress」作成。
2.バックアップした全てのファイルを指定場所へ。注)同じ新しいファイルを削除してから戻す。
3.XAMPP のコントロールパネルを開く←ApacheとMySQLをスタート。
*4.上記1~3でアップデートできない場合、新しいワードプレスをインストールしてログイン(バックアップした時のパスワード)、TwentySeventeenをインストールと子テーマの作成後、ダッシュボードから子テーマの有効化とプラグイン(バックアップしたMySQLのデータと同じプラグイン)をインストールして有効化、次にApacheとMySQLをSTOPしてから「MySQL」の新しいデータを削除してバックアップデータを戻す。Wordpressに再度ログインして、アップデート前にツール内のエキスポートで保存した.xmlファイルをインポートする。
5.最後にphpMyAdminで最適化又はWordpressのダッシュボードからWP-Optomizeで全てを最適化。

以前にもXamppのアップデートをしたことがあるけど、不思議に思うほどスムーズだった。今回はワードプレスで再インストールの形になったので一瞬戸惑ったけど。。。無事に自宅サーバのアップデートが成功!

TOP

Copyrighted Image