ini_set() 作用范围?
Posted
技术标签:
【中文标题】ini_set() 作用范围?【英文标题】:ini_set() scope of effect? 【发布时间】:2011-09-23 08:57:58 【问题描述】:我有index.php
和几个级联包含的文件,类似这样。
index.php -> controller.php -> model.php -> view.php
在model.php
我有一个使用ini_set('memory_limit', '-1');
的函数
ini_set()
设置更改什么时候到期?
执行后index.php
?还是view.php
?还是model.php
中的函数?
【问题讨论】:
【参考方案1】:ini_set()
对于脚本中发生的所有事情(不仅仅是当前文件:正在发生的整个执行线程)都是全局,对于整个一个请求;不管你从哪里调用它,它总是会影响这个脚本的全局设置。当您的脚本终止时,效果将过期 - 例如通过exit
、die
,或者跑到index.php
的末尾。
不会影响其他同时运行的脚本(需要自己调用ini_set
),也不会持久化到后面的请求中(如果需要持久化设置,需要编辑php.ini
)。
注意documentation says the same thing:
设置给定配置选项的值。配置选项将在脚本执行期间保留此新值,并在脚本结束时恢复。
编辑:由于显然不清楚:您使用 ini_set
更改的值将在整个脚本之后有效。当前执行的位置无关紧要(在什么文件中,在什么类中,在什么函数中);设置将是相同的,无处不在。它会一直保持下去,直到您再次更改它,或者直到整个脚本终止。 (不是当前文件,不是当前函数;整个脚本)
【讨论】:
我已经阅读了文档,但我想知道使用此函数后它会影响函数范围(如变量)还是整个脚本。我不确定他们的“脚本”是什么意思。 @thReality:你看我的回答了吗?引用:“不管你从哪里调用它,它总是会影响这个脚本的全局设置”——换句话说,完全不管函数范围。 “无论你从哪里调用它都无关紧要”当你调用它时很重要,“ini_set 将从整个脚本开始有效。”; @user973810:PHP 文档的链接对您来说还不够参考吗?对不起,我没有比这更权威的了。 “在脚本执行期间”如果您不确定“脚本”的含义,则并不明显。如果我在“myclass.php”中定义一个类,我可能会认为“myclass.php”是一个 PHP“脚本”,如果我在该类的函数中调用 ini_set,我可能会错误地猜测该值在外部恢复我的“脚本”函数调用。所以不幸的是,如果人们不知道“脚本”指的是正在发生的整个执行线程,那么通过一遍又一遍地重复“脚本”这个词,答案就不会变得更清楚。以上是关于ini_set() 作用范围?的主要内容,如果未能解决你的问题,请参考以下文章