短編小説:
多数のCLIスクリプトにphpを使用しています。
cliプロセスのpmapダンプを実行すると、phpCLIが特定の「Webモードでのみ使用される」拡張機能をロードしていることに気付きました。
例えば:
[root@XXXX php.d]# pmap 5956 | grep apc
00007fe5d0356000 132K r-x-- /usr/lib/XXXX/apc.so
00007fe5d0377000 2048K ----- /usr/lib/XXXX/apc.so
00007fe5d0577000 12K rw--- /usr/lib/XXXX/apc.so
[root@XXXX php.d]#
ご覧のとおり、pid5956はCLIベースのphpプロセスでさえapc.soをロードしています。
CLI側でAPCが使用されることはないため、これはメモリの浪費です(特に指示がない限り、適用されません)。
「Webモード」にのみ使用する拡張機能は他にもいくつかあります。
先に進んで作成し、2つの別々のphp.iniファイルを維持する必要がある前に、私たちは疑問に思っていました。
非CLIモードでのみ特定のモジュールをロードするようにphp/php.iniに指示する方法はありますか?
ありがとう。
以下のコメントのためにダンプしてください:
[root@XXXX mod_geoip_1.3.5]# pmap 13330 -x | grep apc ; pmap 18151 -x | grep apc
00007f1a883c9000 132 56 0 r-x-- apc.so
00007f1a883ea000 2048 0 0 ----- apc.so
00007f1a885ea000 12 12 12 rw--- apc.so
00007f7404573000 132 56 0 r-x-- apc.so
00007f7404594000 2048 0 0 ----- apc.so
00007f7404794000 12 12 12 rw--- apc.so
[root@XXXX mod_geoip_1.3.5]# man pmap
2つのプロセス、つまりcronジョブとCLIベースのphpプロセスの両方をダンプします。
メモリアドレスが異なる場合、それらが使用するスペースは共有されていないと思いますか?