Frage

Meine Frage basiert auf Dieser Artikel.

Wie können Sie die Profiling -Daten zu einem PHP -Code von XDUBUG2 erstellen und sie dann an eine App wie Kcachegrind eingeben?

Ich habe XDebug in meinem Ubuntu erfolgreich verwendet, da es meine Fehlermeldungen im Browser hervorhebt. Ich habe jedoch kein Terminalwerkzeug wie wie xdebug.

Ich möchte einen visuellen Blick auf meinen PHP -Code wie diesen haben

alt text

War es hilfreich?

Lösung

Fügen Sie diese Zeile Ihrem Php.ini hinzu

xDebug.Profiler_enable = 1

Wenn Sie dann PHP über einen Webserver ausführen, müssen Sie den Webserver neu starten. Andernfalls wird die Conf -Änderung nicht aufgegriffen.

Wenn Sie PHP durch CLI durchführen, ist natürlich kein Neustart erforderlich.

Wenn Sie jetzt Ihr PHP -Skript ausführen, wird eine Datei cachegrind.out.pid im Verzeichnis erstellt, das von xdebug.profiler_output_dir php.ini -Einstellung angegeben ist. Es ist standardmäßig /TMP.

Diese Dateien sind die eine KCACHEGRIND, die laden kann.

Es gibt andere Mittel, um diese Profilgenerierung aufzurufen. Sie können darüber lesen http://www.xdebug.org/docs/all_setings#profiler_enable

Andere Tipps

Schauen Sie sich Webgrind an (http://code.google.com/p/webgrind/)

Ich stieß auf eine ähnliche Situation, in der ich nur Zugang zu einem Terminal und nicht zu einer visuellen Umgebung hatte, auf die ich testen konnte. Schlimmer noch, ich benutzte einen Windows -Computer und einen Kitt.

Die verfügbaren Lösungen sind

  1. Webgrind installieren (http://code.google.com/p/webgrind/)
  2. Ausführen von XDEBUG und Kopieren der Dateien von Cachegrind.out auf einen Computer, auf dem Sie einen Cachegrind -Viewer haben.

Für mich lautete die Antwort, die Cachegrind -Dateien auf meinem lokalen Windows -Computer zu scp und mit Wincachegrind, um sie anzusehen. Sie können sie auf Ihre Linux -Box SCP und KCACHEGRIND auf den Dateien ausführen. Der Nachteil ist, dass Sie möglicherweise nicht die gleiche Dateistruktur haben, sodass Sie den Sourcecode nicht anzeigen können. Wenn Sie die Quelle auch auf Ihrem lokalen Computer haben oder sie dort erhalten können, können Sie dies auch beheben. Öffnen Sie die Cachegrind -Dateien in VIM (oder einem anderen Editor) und führen Sie eine globale Suche durch und ersetzen Sie die Pfade, um sie auf den richtigen Quellweg auf Ihrem lokalen Computer zu ändern.

Ich hoffe, das ist es, wonach Sie gesucht haben.

Bearbeiten Sie, um Kommentare anzusprechen:

Wenn Sie daran arbeiten, eine Callgrind -Datei zu erhalten, die etwas anders ist. Dazu müssen Sie in Linux ausgeführt werden (was ich denke) und die Callgrind- und Valgrind -Programme zur Verfügung stehen. Das Letzte, was Sie hier annehmen sollten, ist, dass Sie PHP als Apache -Mod und nicht in einer anderen Weise ausführen. Verwenden Sie das Callgrind -Tool gegen den Start von Apache und führen Sie die Anforderung im Browser aus. Auf diese Weise erhalten Sie detaillierte Informationen nicht nur über den PHP -Call -Baum, sondern auch über viele Dinge in Apache, die möglicherweise Probleme verursachen.

Hier ist ein Beispiel für das

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

Der -x startet Apache im Debug -Modus mit nur einem Thread. Öffnen Sie von hier aus einen Webbrowser und klicken Sie auf das gewünschte PHP -Skript. Gehen Sie dann zurück und bringen Sie Apache herunter. Dies sollte auch den Callgrind -Analyse beenden.

Wenn Sie keinen Apache oder einen Webbrowser benötigen, können Sie Callgrind mit nur dem PHP -Befehl ausführen

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

Das sollte Ihnen die gleichen Ergebnisse geben, aber ohne alle Apache -Dinge.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top