2011-06-27 38 views
17

我已經有index.php和幾個文件級聯包括,這樣的事情。ini_set()作用域?

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

model.php我使用ini_set('memory_limit', '-1');

時候會設置的ini_set()變化過期的功能?

執行後index.php?或view.php?或者在model.php的功能?

回答

20

ini_set()global對於在腳本中發生的所有事情(不僅僅是當前文件:正在發生的整個執行線程),對於整個請求;從何處調用它並不重要,它始終會影響此腳本的全局設置。效果將在腳本終止時到期 - 例如通過exitdie或運行結束index.php

它不會影響任何其他同時運行的腳本(這些腳本需要自己調用ini_set),並且它不會延續到以後的請求中(如果需要持久設置,則需要編輯php.ini)。

注意,documentation says the same thing

設置給定的配置選項的值。配置選項將在腳本執行過程中保留這個新值,並在腳本結尾恢復。


編輯:既然是顯然不清楚:您更改使用ini_set值將是有效的起整個腳本。無論現在的執行位置在哪裏(在哪個文件中,在什麼類中,在哪個函數中);設置將是相同的,無處不在。它會一直如此,直到您再次更改它,或者直到整個腳本終止。 (不是當前文件,不是當前函數;整個腳本)

+0

我已經閱讀過文檔,但是我不知道它會在函數範圍(如變量)中使用,還是在使用此函數後會影響整個腳本。我是不知道他們的「腳本」是什麼意思。 – thReality

+0

@thReality:你看過我的回答了嗎? Quote:「從哪裏調用它並不重要,它總是會影響此腳本的全局設置」 - 換句話說,完全不考慮函數範圍。 – Piskvor

+0

「調用它並不重要,」 它在調用時很重要,「ini_set將對整個腳本起作用。」; – MTVS