2

我有一个简单的问题,我应该写设置或php.ini文件还是ini_set()在 php 文件上使用。哪个性能更好?

非常感谢。

4

3 回答 3

7

取决于你的目标。php.ini默认情况下,设置将应用于所有 php 应用程序,ini_set将动态更改当前 php 应用程序的 php 设置。

如果您有性能问题,php.ini应该更快,因为您跳过了ini_set.

于 2013-11-15T11:32:39.997 回答
3

在典型的 2018 年硬件上运行ini_set('date.timezone', $timezone)1,000,000 次大约需要 500 毫秒。

对于 PHP 7.1,ini_set()绝对不会比加载另一个 .ini 文件慢。事实上,使用 .iniini_set()在第二个文件中运行require()比加载 .ini 文件要快。

即使是一个空的 .ini 文件也有一些开销。我怀疑 .ini 文件在内部做一些类似于 ini_set 的事情。

# Baseline (no .ini, empty script)
$ time for ((i=0;i<1000;i++)); do php -n empty.php; done
real    0m21.214s

# php.ini: date.timezone = Australia/Sydney
$ time for ((i=0;i<1000;i++)); do php -c php.ini empty.php; done
real    0m23.015s

# inline.php: <?php ini_set('date.timezone', 'Australia/Sydney') 
$ time for ((i=0;i<1000;i++)); do php -n inline.php; done
real    0m21.150s

这些数字似乎很有代表性。但是,这里的性能差异并没有那么大的意义。这可能归结为您需要什么样的环境一致性和灵活性。

于 2018-10-23T23:01:29.257 回答
2

因为我认为 ini_set() 比打开您的 ini 文件并进行更改更好,因为如果您更改 ini 设置一次,它将适用于您所有的 php 项目,但在 ini_set() 中您甚至不必考虑您的其他 php应用。

于 2013-11-15T11:36:13.697 回答