PHP パフォーマンス最適化分析ツール XDebug 大規模 Web サイト デバッグ ツール

WBOY
リリース: 2016-06-13 12:09:00
オリジナル
854 人が閲覧しました

1. インストールと構成
1. PHP 用の XDebug 拡張機能を次の場所からダウンロードします: http://xdebug.org/

2. Linux で XDebug をコンパイルしてインストールします

Quote
tar -xzf xdebug-2.0.0RC3.gz
cd xdebug-2.0.0RC3
/usr/local/php/bin/phpize
./configure --enable-xdebug
cp modules/xdebugしたがって、/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/

注: /usr/local/php/lib/php/extensions/no-debug- non -zts-20020429/ PHP バージョンが異なるとパスも異なるため、このパスに配置する必要はありません。zend_extension_ts で xdebug.so の場所を指定できます。

Quote
vi /usr/local/php/lib/php.ini

php.ini を変更し、PHP アクセラレーション モジュールを削除し、XDebug 拡張機能をサポートするために次の構成情報を追加します。

コードをコピーします コードは次のとおりです:


[Xdebug]
zend_extension_ts="/usr/local/php /lib/php/extensions/ no-debug-non-zts-20020429/xdebug.so"
xdebug.profiler_enable=on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.profiler_output_dir=" /tmp/xdebug"
xdebug.profiler_output_name="script"


Quote
mkdir -p /tmp/xdebug
chmod 755 /tmp/xdebug
chown www: www /tmp/xdebug
/usr/local/apache/bin/apachectl -k restart


3. クライアント (Windows): WinCacheGrind
ダウンロード アドレス: http://sourceforge. net/projects/wincachegrind/

2. 分析プロセス
1. Web サイトにアクセスし、ホームページ上のさまざまなリンクをクリックします。 usr_local_apache_htdocs_app_login_showHeaderLogin_php_cachegrind.out
usr_local_apache_htdocs_app_play_play_php_cachegrind.out
usr_local_apache_htdocs_app_user_member_php_cachegrind.out
usr_local_apache_htdocs _tag_tags_php_cachegrind.out
usr_local_apache_htdocs_top_top_php_cachegrind.out

2. 上記のファイルを Windows にコピーし、クライアント ソフトウェア WinCacheGrind を使用して各ファイルを開くと、次の PHP プログラムが最も時間がかかることがわかりました。実行時間:
/usr/local/apache/htdocs/tag/tags.php 840ms かかりました

3. 分析結果:
1 ,/usr/local/apache/htdocs/tag/ tags.php


(1) 最長の filter_tags 関数は /usr/local/apache/htdocs/tag/tags.php の 158 行目に表示されます:
$tags .= filter_tags($ videos[$i ]['tags'])." ";

(2) /usr/local/apache/htdocs/include /misc.php から filter_tags 関数を引用し、その filter_tags によって getForbiddenTags 関数が呼び出されます。この関数を 21 回実行すると、filter_tags 関数に費やされる時間のほとんどは getForbiddenTags 関数によって発生します。 getForbiddenTags 関数の内容は次のとおりです。


コードをコピー コードは次のとおりです。

function getForbiddenTags()

{

$tagsPath=TEMPLATE_FILE_PATH."tags/forbidden_​​tags.txt";
if(file_exists($tagsPath))
{
$fp = fopen($tagsPath, "r ");
$ arrconf = array ();
if ($fp)
{
while (!feof($fp))
{
$line = fgets($ fp, 1024);
$line = トリム($line);
$rows =explode("=, トリム($rows[ 0]));
if(""!=trim($coumns[0]))
{
$arrconf[trim($coumns[0])] = トリム($coumns[1] );
}
}
}
return $arrconf;
}
}


(4) getForbiddenTags 関数、PHP 関数の分析16827 回呼び出されました。



(5) ボトルネックの考えられる理由:
フィルタリングされる 156 個のキーワードは、/usr/local/apache/template/tags/forbidden_​​tags.txt ファイルに 1 行ずつ保存されます。これは、テキスト データベースの効率のためです。高くありません。 行単位の読み取り関数 fgets と、文字列または指定された文字の両側の空白を削除する関数 Trim は、高負荷では非効率的です。 fopen、fread、fscanf などのファイル読み取り関数をテストして比較できます。 。


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート