0

长话短说:

我们将 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 进程。

如果内存地址不同,我假设它们使用的空间不是共享的?

4

1 回答 1

0

运行man php

创建php-cli.ini排除您不想要的那些。

于 2012-06-06T04:26:08.347 回答