PHP Performance Debugger für Mac

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • erster treffer bei google:



    The fast copy-paste way

    Quellcode

    1. sudo sh -c 'echo zend_extension=$(find /usr/lib/php/extensions -name "xdebug.so") >> $(php -qr "echo php_ini_loaded_file();") && apachectl restart'
    This command do the following :
    • Finds the native Xdebug extension that comes with Xcode
    • Asks php which config file is loaded
    • Adds the Xdebug extension path in the config file
    • Restarts apache.
    Compatible with Lion, Mavericks & Yosemite with the bundeled apache, but untested with MAMP & XAMPP
  • Leider funktioniert das nicht ganz so einfach. Das Kommando schlägt bei mir fehl. Wahrscheinlich weil ich MAMP benutze und nicht den von OSX mitgeliferten apache.

    Aber immerhin ein Ansatz zum weiterfrickeln... Mal sehen wann ich Lust dazu habe :)

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Leider funktioniert das nicht ganz so einfach. Das Kommando schlägt bei mir fehl. Wahrscheinlich weil ich MAMP benutze und nicht den von OSX mitgeliferten apache.

    Aber immerhin ein Ansatz zum weiterfrickeln... Mal sehen wann ich Lust dazu habe :)

    Gruß

    Claus
    naja, du brauchst wahrscheinlich nur die pfade ändern oder eben mal alle 4 genannten schritte manuell durchgehen.
  • Ok, XDebug läuft und mit MacGDBp kann ich jetzt wunderbar PHP debuggen. Geile Sache das. Hätte ich schon viel früher mal testen sollen.

    Jetzt muss ich nur noch herausfinden mit wie ich herausfinde was an meinem PHP Code so lange dauert, bzw ob es überhaupt der PHP Code oder vielleicht doch ein mysql query ist (Wobei ich zweiteres eher nicht glaube)

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Ok, XDebug läuft und mit MacGDBp kann ich jetzt wunderbar PHP debuggen. Geile Sache das. Hätte ich schon viel früher mal testen sollen.

    Jetzt muss ich nur noch herausfinden mit wie ich herausfinde was an meinem PHP Code so lange dauert, bzw ob es überhaupt der PHP Code oder vielleicht doch ein mysql query ist (Wobei ich zweiteres eher nicht glaube)

    Gruß

    Claus
    das siehst du ja allein schon mit der aktivitätsanzeige. einfach schauen welcher prozess mehr cpu verbrät in der fraglichen zeit.
  • gritsch schrieb:

    Thallius schrieb:

    Ok, XDebug läuft und mit MacGDBp kann ich jetzt wunderbar PHP debuggen. Geile Sache das. Hätte ich schon viel früher mal testen sollen.

    Jetzt muss ich nur noch herausfinden mit wie ich herausfinde was an meinem PHP Code so lange dauert, bzw ob es überhaupt der PHP Code oder vielleicht doch ein mysql query ist (Wobei ich zweiteres eher nicht glaube)

    Gruß

    Claus
    das siehst du ja allein schon mit der aktivitätsanzeige. einfach schauen welcher prozess mehr cpu verbrät in der fraglichen zeit.
    Ja, oder die Query mal direkt unter mysql absetzen.
  • matz schrieb:

    gritsch schrieb:

    Thallius schrieb:

    Ok, XDebug läuft und mit MacGDBp kann ich jetzt wunderbar PHP debuggen. Geile Sache das. Hätte ich schon viel früher mal testen sollen.

    Jetzt muss ich nur noch herausfinden mit wie ich herausfinde was an meinem PHP Code so lange dauert, bzw ob es überhaupt der PHP Code oder vielleicht doch ein mysql query ist (Wobei ich zweiteres eher nicht glaube)

    Gruß

    Claus
    das siehst du ja allein schon mit der aktivitätsanzeige. einfach schauen welcher prozess mehr cpu verbrät in der fraglichen zeit.
    Ja, oder die Query mal direkt unter mysql absetzen.
    schwierig wenn es ca. 1000 verschiedene queries sind :)
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    matz schrieb:

    gritsch schrieb:

    Thallius schrieb:

    Ok, XDebug läuft und mit MacGDBp kann ich jetzt wunderbar PHP debuggen. Geile Sache das. Hätte ich schon viel früher mal testen sollen.

    Jetzt muss ich nur noch herausfinden mit wie ich herausfinde was an meinem PHP Code so lange dauert, bzw ob es überhaupt der PHP Code oder vielleicht doch ein mysql query ist (Wobei ich zweiteres eher nicht glaube)

    Gruß

    Claus
    das siehst du ja allein schon mit der aktivitätsanzeige. einfach schauen welcher prozess mehr cpu verbrät in der fraglichen zeit.
    Ja, oder die Query mal direkt unter mysql absetzen.
    schwierig wenn es ca. 1000 verschiedene queries sind :)
    du kannst in mysql auch einstellen dass es dir das alles mitlogg und die langsamsten queries anzeigt etc...
  • gritsch schrieb:

    Thallius schrieb:

    matz schrieb:

    gritsch schrieb:

    Thallius schrieb:

    Ok, XDebug läuft und mit MacGDBp kann ich jetzt wunderbar PHP debuggen. Geile Sache das. Hätte ich schon viel früher mal testen sollen.

    Jetzt muss ich nur noch herausfinden mit wie ich herausfinde was an meinem PHP Code so lange dauert, bzw ob es überhaupt der PHP Code oder vielleicht doch ein mysql query ist (Wobei ich zweiteres eher nicht glaube)

    Gruß

    Claus
    das siehst du ja allein schon mit der aktivitätsanzeige. einfach schauen welcher prozess mehr cpu verbrät in der fraglichen zeit.
    Ja, oder die Query mal direkt unter mysql absetzen.
    schwierig wenn es ca. 1000 verschiedene queries sind :)
    du kannst in mysql auch einstellen dass es dir das alles mitlogg und die langsamsten queries anzeigt etc...
    Ich weiß aber ist halt alles gefrickel :)
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    gritsch schrieb:

    Thallius schrieb:

    matz schrieb:

    gritsch schrieb:

    Thallius schrieb:

    Ok, XDebug läuft und mit MacGDBp kann ich jetzt wunderbar PHP debuggen. Geile Sache das. Hätte ich schon viel früher mal testen sollen.

    Jetzt muss ich nur noch herausfinden mit wie ich herausfinde was an meinem PHP Code so lange dauert, bzw ob es überhaupt der PHP Code oder vielleicht doch ein mysql query ist (Wobei ich zweiteres eher nicht glaube)

    Gruß

    Claus
    das siehst du ja allein schon mit der aktivitätsanzeige. einfach schauen welcher prozess mehr cpu verbrät in der fraglichen zeit.
    Ja, oder die Query mal direkt unter mysql absetzen.
    schwierig wenn es ca. 1000 verschiedene queries sind :)
    du kannst in mysql auch einstellen dass es dir das alles mitlogg und die langsamsten queries anzeigt etc...
    Ich weiß aber ist halt alles gefrickel :)
    sorry, aber was ist daran gefrickel?

    einfach log_slow_queries enablen und eventuell noch bei den zeiten bisschen rumschrauben dass er passendes findet und das wars.
  • das verstehe ich auch nicht. Gefrickel wird es, wenn es einem egal ist.

    Ansonsten gibt Dir der trace von xdebug doch alles, was Du zunächst brauchst, um
    zu sehen, welche Methoden oder Datenbankabfragen dauern.
    Sollten es MySQL sein, kannst Du meist mit EXPLAIN gut sehen, woran es liegt.

    Von welchen Laufzeiten sprichst Du? Nicht, das es hier um Millisekunden geht.

    Kann man die 1000 Abfragen nicht optimieren, zum Beispiel eine temporäre Tabelle anlegen oder Abfragen vermeiden?

    Nachtrag: und slow_queries sollte immer auf einem Testserver am Laufen sein. Dort sollte aber, wenn man alles halbwegs richtig macht sehr, sehr selten was drin sein. Ich glaub, da sind standardmäßig nur die über 30 Sekunden drin...
  • entwickler schrieb:

    das verstehe ich auch nicht. Gefrickel wird es, wenn es einem egal ist.

    Ansonsten gibt Dir der trace von xdebug doch alles, was Du zunächst brauchst, um
    zu sehen, welche Methoden oder Datenbankabfragen dauern.
    Sollten es MySQL sein, kannst Du meist mit EXPLAIN gut sehen, woran es liegt.

    Von welchen Laufzeiten sprichst Du? Nicht, das es hier um Millisekunden geht.

    Kann man die 1000 Abfragen nicht optimieren, zum Beispiel eine temporäre Tabelle anlegen oder Abfragen vermeiden?

    Nachtrag: und slow_queries sollte immer auf einem Testserver am Laufen sein. Dort sollte aber, wenn man alles halbwegs richtig macht sehr, sehr selten was drin sein. Ich glaub, da sind standardmäßig nur die über 30 Sekunden drin...
    Es geht immer um Millisekunden :) Nein im Ernst. Ich habe eine recht komplexe Seite die dynamisch mit PHP aufgebaut wird. In 90% der Fälle dauert der Aufbau um die 200ms und ist damit mehr als akzeptabel. Aber je nach Parametern die diese Seite hat dauert es auch schonmal 3s und das geht gar nicht.

    Da das Ganze nur auf den Life Rechner auftaucht muss es wohl ein Performance Problem sein wenn viele User gleichzeitig diese Seite besuchen (Wobei viele eigentlich auch nicht stimmt, mehr als 50 werden es nie). Deshalb ist das Debuggen ein wenig komplizierter da ich es auf meinem Testsystem nicht probieren kann.

    Ein Explain lasse ich mal laufen aber wie gesagt ich glaube es liegt eher an der performance des Servers und ist damit nur zu beheben wenn ich einen schnelleren Server nehme (Was im Moment nicht mal eben gemacht ist) oder das PHP Script optimiere. Hier wäre es einfach schön, mal eben schnell zu sehen welche Schleifen wie lange brauchen ohne risiege log dateien zu durchforschen oder tausend Debug-Ausgaben zu machen.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • 20 und mehr Abfrage pro Seitenaufbau (20 x 50 = 1000 Abfraen).
    Sind echt IMMER 20+ notwendig? Könnte man auch das Ergebnis der Abfrage, das ja verarbeitet HTML ergibt nicht unter Umständen Cachen? Insbesondere dann, wenn es immer das gleiche HTML ergibt..., dann ersparst Du Dir die Abfrage und den Prozess für die Umwandlung in HTML.
    Nachtrag: Was sich insbesondere dann bemerkbar macht, wenn dort noch Platzhalter drin sind, die jedesmal per Suchen/Ersetzen mit Inhalten ersetzt werden.

    Ansonsten kann man selbstverständlich auch Lasttests durchführen, mit einer beliebien Anzahl an Clients. Such mal nach Lasttest/Lastgenerator für apache.

    Das Tracelog von xdebug ist schnell ausgewertet. Wenn Du sagst, das es normal 200 ms Sekunden sind, dann hast Du bestimmt schon eine gute Verteilung in dem Trace. Den kannst Du zur Not auch kurz in Excel importieren und die Unterschiede zwischen den Zeiten berechnen. Dann ist es einfacher, weil Du gleich siehst bzw. sortieren kannst, welche Methode am meisten Zeit kostet.

    Und ansonsten kann ich nur einen Server mit 2 SSD/Raid1 empfehlen. Insbesondere dann, wenn Du dich für das cachen entscheidest. Aber alles andere wird natürlich auch schneller.