PHP info を見て、同じコンパイル方法で、
自身のPHP のバージョンのPECL のAPCu を入れる
https://pecl.php.net/package/APCu
当方の場合、Windows の64bit でPHP7.2.2 の
https://pecl.php.net/package/APCu/5.1.10/windows
7.2 Thread Safe (TS) x64
を使用した。
自身のPHPにあったものを使う
どうも、PHP5.5や5.6 だと、APC とAPCu がかぶっているらしいので、
apcu_bc というPECL を使わないといけないらしい
https://pecl.php.net/package/apcu_bc
しかし、今回、当方が使うのはPHP7系なので、apcu_bc という
apc の機能をつぶすものは入れる必要はない
入れたら
php.ini の設定だが
まず、エクステンションを読み込む。
PHP7からは、Linux でもWindows でも、
xxx.dll や、xxx.so の様に拡張子の記述の必要がなくなっている!
なので、php.ini に
extension=php_apcu
と書いて、拡張の設定をphp.ini の一番最後の方にでも、
CLi から使うならphp.ini に
apc.enable_cli=1
追加する
例えばネットでみる設定は
[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
などであった。
当方の場合、キャッシュのサイズを自動にしたかったのだが、
自動ができるか?と思い、-1 を設定してみたが、
自動にはならず、0や-1 を設定すると、強制的に32M に戻されてしまう様だ
CLi の場合の確認は、
php.exe の該当のコマンドで
php.exe -i | grep
とすれば
~ 略 ~
apcu
APCu Support => Enabled
Version => 5.1.10
APCu Debugging => Disabled
MMAP Support => Disabled
Serialization Support => php
Build Date => Feb 16 2018 07:38:57
Directive => Local Value => Master Value
apc.coredump_unmap => Off => Off
apc.enable_cli => On => On
apc.enabled => On => On
apc.entries_hint => 4096 => 4096
apc.gc_ttl => 3600 => 3600
apc.preload_path => no value => no value
apc.serializer => php => php
apc.shm_segments => 1 => 1
apc.shm_size => 32M => 32M
apc.slam_defense => On => On
apc.smart => 0 => 0
apc.ttl => 7200 => 7200
apc.use_request_time => On => On
apc.writable => /tmp => /tmp
と出てくれば成功。
そして
あとから説明をする、APCやAPCu をGUI で表示するのならば、
;extension=gd2
を
extension=gd2
そしてこれもはじめ悩んだが、
phpinfo() の関数でapcu の項目が、GUIのこの関数では出てこない!
output_buffering = Off
としよう、値が入っていると動かない!!!
また、最後に前途のGUI でAPC もしくはAPCu の使用量等や、
設定の項目を閲覧するツールは
PHP7 以前のものを使っていると古いのか、閲覧できなかった。
なので新しいものを
https://raw.githubusercontent.com/krakjoe/apcu/master/apc.php
からダウンロードしたら、あっさり閲覧できた。
以上、メモでした
お粗末<_ _>
大事な追伸!!!(2020年5月3日)
Windows版の拡張を使っていて気が付いたのですが、
同時にコンパイルされて(して)出来たバージョンの拡張には、
.dll を付けなくとも、phpinfo() で拡張がされたことになりますが、
どうも、後からPECL としてダウンロードしたものであると、
.dll を付けないと認識しない気がする。。。。
なので、何処かの誰かがcompileして、一式dll も入っているものでも、
良く分からないけれど、APCu ならば、.dll は必要で、
extension=php_apcu
だと動かず。。。
extension=php_apcu.dll
でないといけない気がする。。。
なんなんだ、この謎仕様は?
お粗末<_ _>
コメント一覧