PHP7.4でAPCuとOPcacheをインストールする方法
先日本ブログのサーバをCentOS6系から7系に移行し、その際にMySQLのバージョンも上がった為、クエリキャッシュが使えなくなった。その分の高速化やサーバ負荷軽減を他の部分で補おうと思い調べてみたところ、PHP7系ではAPCuとOPcacheというものがあるらしい。以下に導入方法をメモ。
インストール
SSH接続し、以下でインストールする。
#APCuとOPcacheをインストール yum -y install --enablerepo=remi,remi-php74 php-opcache php-pecl-apcu #正常にインストールされているか確認 rpm -qa | grep php #以下がリスト内にあればOK php-opcache-7.4.19-1.el7.remi.x86_64 php-pecl-apcu-5.1.20-1.el7.remi.7.4.x86_64
OPcacheの設定
#設定ファイルを開く vi /etc/php.d/10-opcache.ini #変更前 ;opcache.memory_consumption=128 #変更後 opcache.memory_consumption=64
opcache.memory_consumptionはOPcacheに使用されるメモリのサイズ(MB単位)になる。当方の環境がメモリ1GBのサーバの為、128MBだと若干使いすぎな気がしたので64MBにした。
リファレンス
各種設定は以下リファレンスを参考にする。
APCu
https://www.php.net/manual/ja/apcu.configuration.php
OPcache
https://www.php.net/manual/ja/opcache.configuration.php
尚、APCuは大半の環境ではデフォルトの設定で問題無いとのこと。
ブラウザ上でキャッシュ状況のチェック
APCu / OPcache共に管理画面のようなものを導入すればブラウザ上でキャッシュ状況のチェックを行える。以下が対応方法。
APCu
以下をダウンロード後、展開し適当なディレクトリにアップロードする。
https://github.com/krakjoe/apcu/archive/master.zip
ブラウザから「https://ドメイン/ディレクトリ/apc.php」でアクセスできる。尚、39行目辺りの以下部分を変更することでBasic認証がかかる模様。
defaults('ADMIN_USERNAME','xxxxx'); // Admin Username defaults('ADMIN_PASSWORD','xxxxx'); // Admin Password - CHANGE THIS TO ENABLE!!!
ただ、既にBasic認証をかけているディレクトリにアップロードしており、上記変更を行うと正常に動作しなくなった。その為、既にBasic認証をかけている場合は上記変更を行わないこと。
OPcache
以下をダウンロード後、展開し適当なディレクトリにアップロードする。
https://gist.github.com/ck-on/4959032
ブラウザから「https://ドメイン/ディレクトリ/ocp.php」でアクセスできる。
所感
管理画面を見てみるとOPcacheは問題なく動いているようだけど、APCuの方は全く動いていないように見受けられた。調べてみるとAPCuは導入しただけでは意味が無く、「APCuを使いますよ」という以下のようなプログラムを書かないといけないらしい。
<?php ini_set( 'display_errors', 1 ); $key = 'hoge'; $data = [ 'test', 'hoge' => [ 'fuga', 'foo' => 'bar' ] ]; apcu_store($key, $data); print_r(apcu_cache_info()); apcu_fetch($key);
key / value形式でメモリにデータを保存するmemcachedのようなものっぽい。
参考サイト
関連記事
-
-
画像削除用function
ファイルパス、拡張子、seq番号、画像番号を渡してあげるだけ。 拡張子部分があれ ...
-
-
PHPでパスワード付きのZIP / PDFファイルを作成する方法
PHPでZIPファイル化する方法やPDFファイル出力する方法を過去に書いたが、何 ...
-
-
imgタグとPHPでグラフ作成
プラグインやライブラリを使わずにグラフを作る 機会があったのでメモ。 ■サンプル ...
-
-
当選確率が異なる抽選(ガチャ)をPHPで作成
ソシャゲのガチャみたいな、当選確率が異なる抽選をPHPで作成したかった。調べたと ...
-
-
前置インクリメントと後置インクリメント
何かの検索している時に見つけたもの。 前置インクリメントの方が高速とのこと。 ■ ...
-
-
MySQLで使用するインデックスを指定する
ちゃんと指定してるのにインデックスが使用されていない場合、 オプティマイザに知ら ...
-
-
PHPで他サーバにファイルをアップロードする2
formで画像を送信した後、他サーバにファイルをアップロードしたかった。以前はP ...
-
-
$_SERVER['PHP_SELF']に脆弱性あり
formのaction属性とかページングのリンクとかで、 <form ac ...
-
-
PHPでステータスコードを取得する方法
サーバーの死活監視でUptimeRobotを使っていたけど、どうも正常に監視して ...
-
-
MySQLのREGEXPで半角記号を検索したい場合
MySQLのREGEXPで半角記号を検索したい場合 \\を付けてエスケープしない ...