0

I want to debug how much time is file_exists() taking up on my site. To debug this, I'd like to disable all instances of file_exists(), temporarily, to try how fast the site generates without it.

Is there any easy way to do this? I'm using PHP 5.3.3.

4

3 に答える 3

0

xdebugをインストールし、プロファイラーを実行し、すべてのfile_exists呼び出し (またはその他の関数) にかかる時間、呼び出し頻度などを確認します。

于 2013-03-14T01:45:42.577 に答える
0

PHPで関数を無効にすることができますが、それはまさにそれが示唆することを行います.関数を完全に無効にします. 関数を「無効にする」が、スクリプトを失敗させたくない場合、関数は何か有用なものを返さなければならないため、探していることは単に不可能です。PHP はすべての組み込み関数とユーザー空間関数に対してどのように返すべきですか? 特に、PHP はすべてのコンテキストでどちらが正しい値であるかを知ることができないため、スクリプトを機能させるために、場合によってfile_exists()は を返す必要があります。配列とオブジェクトが登場すると、(明らかに) 非常に複雑になります。truefalse

もう 1 つの方法は、カスタムの関数で関数をオーバーレイすることです。PHP は、最初に現在の名前空間で修飾されていない関数名を検索し、その後でグローバルなものを使用します。file_exists()これは、すべての名前空間で名前が付けられた関数を作成できることを意味します。

しかし、私の最後の推奨事項は、デバッグとプロファイリングのためにコードをハックしないことです。代わりに、デバッガーとプロファイラーを使用してください。

于 2013-03-14T00:15:35.837 に答える
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"];するとコール数が表示されます。

于 2013-03-14T00:24:02.063 に答える