使用PHP的include_once
或require_once
而不是使用類似C的include
與一個標頭保護程序更有效嗎?PHP包括一次
即,
include_once 'init.php';
與
include 'init.php';
//contents of init.php
if (!defined('MY_INIT_PHP')) {
define('MY_INIT_PHP', true);
...
}
使用PHP的include_once
或require_once
而不是使用類似C的include
與一個標頭保護程序更有效嗎?PHP包括一次
即,
include_once 'init.php';
與
include 'init.php';
//contents of init.php
if (!defined('MY_INIT_PHP')) {
define('MY_INIT_PHP', true);
...
}
「require_once」和「include_once」一般是慢了一點,只是「要求」和「包括」,因爲他們執行請檢查是否文件已經被加載過。
但不同的只是在非常複雜的應用程序,你應該做的自動加載反正通過的事項不需要require_once/include_once,如果你的自動加載磁帶機以及編碼。
在最簡單的應用,最好使用放在require_once/include_once爲了方便的原因。
的頭文件保護的做法是應該避免的只是亂碼。試想一下,如果你忘記檢查許多文件中的一個。調試可能是一場噩夢。
如果您的應用程序適合它,只需使用自動加載。這是快速和最方便,乾淨的方式。
而......定義('MY_INIT_PHP')...'也不是免費的。因此,性能問題歸結爲「你的php腳本解決方案比php的內部解決方案更快」......我懷疑絕大多數情況下。 – VolkerK 2010-04-07 19:53:29
@ VolkerK是的,這也增加了它。用解釋的PHP代碼編寫的任何解決方案的定義都比PHP本地實現要慢。至少我想不出任何不同的情況。 – selfawaresoup 2010-04-07 19:57:19
你可以用計時器嘗試10,000次,但我覺得定義MY_INIT_PHP是無窮快。
說實話,很可能這種小的差異,有沒有實際需要照顧,除非你的工作對於像Facebook這樣的網站。
如果腳本內容是唯一的,我總是使用REQUIRE_ONCE。
我也幾乎總是使用require_once ...的原因不同:如果文件丟失,require_once會給出致命錯誤,而include_once只會在此情況下發出警告。否則,這兩個是相同的。 – hongliang 2010-04-07 22:46:31
我希望include_once比使用在包含文件中頭文件保護更快,因爲你仍然需要打開並加載在後者的文件。
你說得對。他應該詢問它是否比下面的代碼更快:if(!defined('MY_INIT_PHP')){define('MY_INIT_PHP',true);包括'init.php';} – webbiedave 2010-04-07 20:20:49
這是代碼性能的瓶頸嗎? – 2010-04-07 19:11:48