哪个更好php.ini vs ini_set()

时间:2013-11-15 11:30:57

标签: php ini ini-set

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

非常感谢。

3 个答案:

答案 0 :(得分:6)

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

如果您有性能问题,php.ini应该更快,因为您跳过ini_set的函数调用。

答案 1 :(得分:2)

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

对于PHP 7.1,ini_set()绝对不比加载另一个.ini文件慢。实际上,使用ini_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

这些数字似乎很具有代表性。但是,此处的性能差异并不那么有意义。可能取决于您需要什么样的环境一致性和灵活性。

答案 2 :(得分:1)

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