ini_set() scope of effect?

痞子三分冷 提交于 2019-11-26 23:13:18

问题


I've had index.php and several files which cascading include,something like this.

index.php -> controller.php -> model.php -> view.php

In model.php I have a function using ini_set('memory_limit', '-1');

When will the ini_set() change of the setting expire?

After executed index.php? Or view.php? Or the function in model.php?


回答1:


ini_set() is global for everything that happens in the script (not just the current file: the whole thread of execution that is occurring), for this entire one request; it doesn't matter whence you invoke it, it will always affect the global settings for this script. The effect will expire when your script terminates - e.g. through exit, die, or running off the end of index.php.

It will not affect any other scripts running simultaneously (those need to call ini_set themselves), and it will not persist into later requests (if you need persistent settings, you need to edit php.ini).

Note that the documentation says the same thing:

Sets the value of the given configuration option. The configuration option will keep this new value during the script's execution, and will be restored at the script's ending.


Edit: Since it is apparently unclear: the value you change using ini_set will be valid for the whole script onwards. It doesn't matter where the execution currently is (in what file, in what class, in what function); the setting will be the same, everywhere. It will remain so until you change it again, or until the whole script terminates. (not the current file, not the current function; the whole script)



来源:https://stackoverflow.com/questions/6490955/ini-set-scope-of-effect

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!