我有一个简单的问题,我应该写设置或php.ini
文件还是ini_set()
在 php 文件上使用。哪个性能更好?
非常感谢。
取决于你的目标。php.ini
默认情况下,设置将应用于所有 php 应用程序,ini_set
将动态更改当前 php 应用程序的 php 设置。
如果您有性能问题,php.ini
应该更快,因为您跳过了ini_set
.
在典型的 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
这些数字似乎很有代表性。但是,这里的性能差异并没有那么大的意义。这可能归结为您需要什么样的环境一致性和灵活性。
因为我认为 ini_set() 比打开您的 ini 文件并进行更改更好,因为如果您更改 ini 设置一次,它将适用于您所有的 php 项目,但在 ini_set() 中您甚至不必考虑您的其他 php应用。