Profiling von PHP-Code

Ich möchte einen Weg finden, um zu bestimmen, wie lange jede function in PHP und jede Datei in PHP dauert, um zu laufen. Ich habe eine alte PHP-Anwendung, die ich versuche, die “rauen Stellen” zu finden, und ich möchte herausfinden, welche Routinen und Seiten sehr lange brauchen, um sie objektiv zu laden.

Gibt es vorgefertigte Tools, die dies erlauben, oder bin ich mit Mikrozeit festgefahren und habe mein eigenes Profiling-Framework erstellt?

   

    Ich habe letzte Woche einige Optimierungsarbeiten gemacht. XDebug ist in der Tat der Weg zu gehen.

    Aktivieren Sie es einfach als Erweiterung (aus irgendeinem Grund würde es nicht mit ze_extension auf meinem Windows-Rechner funktionieren), richten Sie Ihre php.ini mit xdebug.profiler_enable_trigger = On ein und rufen Sie Ihre normalen URLs mit XDEBUG_PROFILE = 1 entweder als get oder post auf Variable, um genau diese Anforderung zu profilieren. Es gibt nichts einfacheres!

    Außerdem kann ich webgrind , ein webbasiertes (php) Google Summer Of Code-Projekt, das Ihre Debug-Ausgabedateien lesen und parsen kann, wirklich empfehlen!

    Hier ist ein schöner Tipp.

    Wenn Sie XDebug verwenden, um Ihr PHP zu profilieren, richten Sie den profiler_trigger ein und verwenden Sie dies in einem Bookmarklet, um den XDebug Profiler auszulösen;)

    javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';} 

    casting Sie einen Blick auf xdebug , das eine detaillierte Profilerstellung ermöglicht. Und hier ist eine Erklärung, wie man xdebug benutzt.

    Xdebug’s Profiler ist ein leistungsfähiges Werkzeug, mit dem Sie Ihren PHP-Code analysieren und Engpässe feststellen können oder allgemein erkennen können, welche Teile Ihres Codes langsam sind und einen Geschwindigkeitsschub verwenden könnten. Der Profiler in Xdebug 2 gibt Profilinformationen in Form einer Cachegrind-kompatiblen Datei aus.

    Ein großes Lob an SchizoDuckie für die Erwähnung von Webgrind . Dies ist das erste Mal, dass ich davon gehört habe. Sehr nützlich (+1).

    Andernfalls können Sie kcachegrind auf linux oder seinem weniger derivativen wincachegrind verwenden . Beide Apps lesen die Profiler-Ausgabedateien von xdebug und fassen sie für Ihr Sehvergnügen zusammen.

    Ich habe mal einen Screencast für Zend Core gesehen . Sieht ziemlich gut aus, aber es kostet Geld, ich weiß nicht, ob das ein Problem für dich ist.

    XDebug ist nett, aber es ist nicht so einfach, IMO zu verwenden oder einzurichten.

    Der in Zend Studio integrierte Profiler ist sehr einfach zu benutzen. Sie drücken einfach eine Schaltfläche in einer Browser-Symbolleiste und BAM haben Sie Ihr Code-Profil. Es ist vielleicht nicht so tiefgründig wie ein CacheGrind-Speicher, aber es war immer gut genug für mich.

    Du musst auch die Zend Platform einrichten, aber das ist einfach und kostenlos für die Entwicklung – du musst trotzdem für die Zend Studio Lizenz bezahlen.

    Die Profiling-functionen von xdebug sind ziemlich gut. Wenn Sie die Ausgabe im Valgrind-Format speichern, können Sie dann mit etwas wie KCachegrind oder Wincachegrind das Call-Graph anzeigen, und wenn Sie eine visuelle Person sind, können Sie leichter herausfinden, was passiert.

    PhpED von NuSphere (www.nusphere.com) verfügt nicht nur über leistungsstarke Echtzeit-Debugging-functionen, sondern auch über einen integrierten Profiler, der mit nur einem Mausklick innerhalb der IDE ausgeführt werden kann.

    Wenn Sie die Erweiterung xdebug installieren, können Sie sie so einrichten, dass sie Laufprofile exportiert, die Sie in WinCacheGrind (unter Windows) lesen können. Ich kann mich nicht an den Namen der App erinnern, die die Dateien unter Linux liest.

    Die einfachste Lösung ist die Verwendung von Zend Profiler, Sie brauchen Zend Platform nicht, Sie können es direkt von Ihrem Browser aus starten, es ist ziemlich genau und hat die meisten functionen die Sie benötigen und es ist in Zend Studio integriert