Es gibt ein berühmtes 80-20-Gesetz in der Wirtschaft, das in der Programmierung zitiert wird: 80 % der Leistungsengpässe werden durch 20 % des Codes verursacht. Mit Hilfe der XDebug-Erweiterung von PHP können diese 20 % des Codes effektiv gefunden werden.
1. Installation und Konfiguration
1. Laden Sie die XDebug-Erweiterung für PHP herunter unter: http://xdebug.org/
2. Kompilieren und installieren Sie XDebug unter Linux
tar -xzf xdebug-2.0.0RC3.gz cd xdebug-2.0.0RC3 /usr/local/php/bin/phpize ./configure --enable-xdebug cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/
Hinweis: /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/ Verschiedene PHP-Versionen haben unterschiedliche Pfade und müssen nicht hier platziert werden Pfad. Sie können den Speicherort von xdebug.so in zend_extension_ts angeben.
vi /usr/local/php/lib/php.ini
Ändern Sie php.ini, entfernen Sie das PHP-Beschleunigungsmodul und fügen Sie die folgenden Konfigurationsinformationen hinzu, um die XDebug-Erweiterung zu unterstützen
[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" mkdir -p /tmp/xdebug chmod 755 /tmp/xdebug chown www:www /tmp/xdebug /usr/local/apache/bin/apachectl -k restart
3. http:/ /sourceforge.net/projects/wincachegrind/
2. Analyseprozess
1 Besuchen Sie Ihre Website, klicken Sie mehrmals auf verschiedene Links auf der Startseite, XDebug wird im / generiert. tmp/xdebug-Verzeichnis Die folgenden Dateien:
usr_local_apache_htdocs_app_checknum_chknum_php_cachegrind.out 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. Kopieren Sie die oben genannten Dateien nach Windows und verwenden Sie die Client-Software WinCacheGrind, um jede Datei zu öffnen. Es wurde festgestellt, dass die Ausführung des folgenden PHP-Programms am längsten dauert :
/usr/local/apache/htdocs/tag/tags.php 耗时840ms
3. Analyseergebnisse:
1 🎜>(1) Zeitaufwändig Die längste filter_tags-Funktion erscheint in Zeile 158 von /usr/local/apache/htdocs/tag/tags.php:
(2) Die filter_tags-Funktion wird zitiert aus / usr/local/apache/htdocs /include/misc.php, die Funktion getForbiddenTags wird 21 Mal von der Funktion filter_tags aufgerufen. Der meiste Zeitaufwand für die Funktion filter_tags wird durch die Funktion getForbiddenTags verursacht. Der Inhalt der getForbiddenTags-Funktion lautet wie folgt:
$tags .= filter_tags($videos[$i]['tags'])." ";
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 = trim($line); $rows = explode("#", $line); $coumns = explode("=", trim($rows[0])); if(""!=trim($coumns[0])) { $arrconf[trim($coumns[0])] = trim($coumns[1]); } } } return $arrconf; } }
(4) Mögliche Gründe für den Engpass:
Die 156 zu filternden Schlüsselwörter werden zeilenweise in /usr/local/apache/template gespeichert / In der Datei tags/forbidden_tags.txt ist die Textdatenbank nicht effizient.