Heim > Backend-Entwicklung > PHP-Tutorial > Verwenden Sie xdebug, um PHP-Programme zu analysieren und Leistungsengpässe zu finden

Verwenden Sie xdebug, um PHP-Programme zu analysieren und Leistungsengpässe zu finden

伊谢尔伦
Freigeben: 2016-11-26 14:33:40
Original
1986 Leute haben es durchsucht

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/
Nach dem Login kopieren

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
Nach dem Login kopieren

Ä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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

3. Analyseergebnisse:

1 🎜>(1) Zeitaufwändig Die längste filter_tags-Funktion erscheint in Zeile 158 von /usr/local/apache/htdocs/tag/tags.php:

Verwenden Sie xdebug, um PHP-Programme zu analysieren und Leistungsengpässe zu finden(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:

(3) Die Analyse der getForbiddenTags-Funktion zeigt, dass die PHP-Funktion trim 16827 Mal aufgerufen wurde.
$tags .= filter_tags($videos[$i]['tags'])." ";
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

(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. Verwenden Sie xdebug, um PHP-Programme zu analysieren und Leistungsengpässe zu finden

Die zeilenweise Lesefunktion fgets und die Funktion trim, die Leerzeichen auf beiden Seiten einer Zeichenfolge oder bestimmter Zeichen entfernt, sind unter hoher Last ineffizient. Sie können Dateilesefunktionen wie fopen, fread, testen. und fscanf. Vergleichen Sie es.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage