长话短说:
我们将 php 用于大量 CLI 脚本。
当我们对 cli 进程进行 pmap 转储时,我们注意到 php CLI 正在加载某些“仅用于 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]#
如您所见,pid 5956 正在加载 apc.so,即使它是基于 CLI 的 php 进程。
这是一种内存浪费,因为 APC 从未在 CLI 端使用(除非特别指示这样做,否则不适用于我们)。
还有一些其他扩展我们只用于“网络模式”。
在我们继续创建并因此必须维护 2 个单独的 php.ini 文件之前,我们想知道:
有没有办法指示 php / php.ini 仅在非 CLI 模式下加载某些模块?
谢谢。
转储以下评论:
[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 进程。
如果内存地址不同,我假设它们使用的空间不是共享的?