2013-03-14 47 views
0

我想調試file_exists()在我的網站上佔用多少時間。爲了進行調試,我想臨時禁用所有file_exists()實例,以嘗試沒有它的網站生成速度。我可以在整個PHP腳本中禁用/跳過某個函數嗎?

有沒有簡單的方法來做到這一點?我正在使用PHP 5.3.3。

+0

不是我該怎麼做,但是,你可以在php.ini中使用'disable_functions' – 2013-03-14 00:11:16

回答

0

您可以在PHP中使用disable functions,但它確實如此:它完全禁用了該功能。你正在尋找的東西根本不可能,因爲如果你「禁用」一個函數,但不希望腳本失敗,函數必須返回一些有用的東西。 PHP應該如何爲每個內建函數和用戶空間函數返回?特別是因爲PHP無法知道,其中的每個上下文都是正確的值:在某些情況下,file_exists()應返回true,在某些false中使腳本工作。當數組和對象發揮作用時,它會變得非常複雜(顯然)。

另一種方法是使用自定義函數覆蓋函數:PHP首先在當前名稱空間中搜索非限定函數名稱,然後才使用全局函數名稱。這意味着您可以在每個名稱空間中創建名爲file_exists()的函數。

但是我的最終建議是:不要在你的代碼中進行調試和分析。 改爲使用調試器和分析器

0

試着寫一個潮頭功能,例如調用它,而不是file_exists()

<?php 
function call_file_exists($file) { 
$debug = true; 
if($debug) { 
$_SESSION["count"]++; //count all event when file_exist called 
return false; 
} else { //if no debug, normal function call and return the result 
return file_exists($file); 
} 
} 
?> 

所以,如果你打印$_SESSION["count"];它會顯示來電的號碼。

0

安裝xdebug,運行一個profiler,查看所有調用file_exists調用的時間(或任何其他函數),調用頻率以及更多。

相關問題