【发布时间】:2024-12-23 07:15:02
【问题描述】:
我有一个简单的问题,我应该写设置或php.ini 文件还是在php 文件上使用ini_set()。哪个性能更好?
非常感谢。
【问题讨论】:
我有一个简单的问题,我应该写设置或php.ini 文件还是在php 文件上使用ini_set()。哪个性能更好?
非常感谢。
【问题讨论】:
取决于你的目标。默认情况下,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 文件慢。事实上,在带有require() 的第二个文件中运行ini_set() 比加载.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 应用程序。
【讨论】: