【发布时间】:2009-07-07 00:50:11
【问题描述】:
在编译 PHP 时启用配置选项with-config-file-scan-dir 会导致性能问题吗?
具体来说,这是否会告诉 PHP 二进制文件在每次加载 PHP 模块以响应请求时进行文件系统扫描?
我想确实如此,而且拥有多个 ini 文件只会导致对每个请求的磁盘访问多一点。我想这可以通过将所有这些单独的指令放在同一个 php.ini 文件中来缓解。
谁能证实或否认这一点?
【问题讨论】:
在编译 PHP 时启用配置选项with-config-file-scan-dir 会导致性能问题吗?
具体来说,这是否会告诉 PHP 二进制文件在每次加载 PHP 模块以响应请求时进行文件系统扫描?
我想确实如此,而且拥有多个 ini 文件只会导致对每个请求的磁盘访问多一点。我想这可以通过将所有这些单独的指令放在同一个 php.ini 文件中来缓解。
谁能证实或否认这一点?
【问题讨论】:
布莱恩,
CLI/(Fast)CGI 版本每次启动时都会加载 .ini 文件;但是,apache 模块会在服务器启动时将它们加载到内存中。您可以通过更改任何 .ini 文件中的值并运行 CLI 二进制文件来测试此行为。请注意,您需要重新启动服务器才能看到服务器模块版本的更改。
【讨论】:
这是否告诉 PHP 二进制文件在每次加载 PHP 模块以响应请求时进行文件系统扫描?
没有。当您编译@987654321@ 时,您所做的只是告诉 PHP 将此目录中的所有文件合并到其配置中。这是系统配置中经常使用的一种方法,其中包管理系统需要能够从应用程序中添加/删除特定于包的配置,而不会破坏最终用户修改的配置文件。这里的一个例子是,在基于 Debian 的系统上,当您 apt-get install php-pgsql 时,它将创建一个 /etc/php/conf.d/pgsql.ini,其中将包含 extension=pgsql.so 行以及任何特定于模块的选项。
在编译 PHP 时启用配置选项 with-config-file-scan-dir 会导致性能问题吗?
不是真的。实际上,它只是该特定目录中所有 .ini 文件的串联。
我可以告诉你,Debian、CentOS 和 Zend Server 默认都使用这个选项。
此外,就在我的脑海中,*nix RC 文件、Apache2、Courier、Emacs 和 Cron 都使用(或可以使用)类似的方法来加载配置。
【讨论】: