Troubleshooting PHP IssuesJan BurklSystem Engineerjan@zend.comDas Webinar kann hier angeschaut werden:http://www.zend.com/...
Code Qualität und der Einfluss aufEntwicklungszeit und -kosten                      Quelle: Boehm und Papaccio Studie• Feh...
Was werden wir heute besprechen?                                            Typen von PHP Problemen                       ...
Allgemeine PHP Issues E_ERROR (Fatal Errors) E_WARNING (Problematisch, aber keine Fatal Errors) E_NOTICE (nicht kritisc...
Andere Problemtypen• Logische Fehler   Z.B. inkorrekte Berechnungen, fehlerhafte SQL Querys, etc.• Schlechte Performance ...
PHP Errors – Best Practices Während Entwicklungs- und Testphase sollten alle Fehler angezeigt werden:  error_reporting =...
BeispielDieses Beispiel erzeugt eine Notice, zwei Warnungenund einen Fatal Error:    <?php    error_reporting(E_ALL);    i...
Custom Errors Events• Ein aus PHP heraus generiertes Event wird an den Default  Output gesendet• Die Events können in ein ...
Zend Studio: Probleme während derEntwicklung und des Testens lokalisieren• Parse Errors (E_PARSE)  entdecken ohne den Code...
No need to die()…• Zend_Log, Firebug, FirePHP  protected function _initLog() {      $writer = new Zend_Log_Writer_Firebug(...
No need to die()…• Zend_Log, Firebug, FirePHP  protected function _initLog() {      $writer = new Zend_Log_Writer_Firebug(...
PHP Error Logs für Troubleshooting• Error Logs sind hilfreich während der Entwicklung, des  Testens und in der Produktion•...
Application Level Monitoringin Zend Server• Zend Server Monitor überwacht die Applikation nach:   PHP Fehlern (einschließ...
Zend Server - Events                © All rights reserved. Zend Technologies, Inc.
Ursachenanalyse• Wiederkehrende Events werden aggregiert und auf  einer Zeitleiste angeordnet  Wann wiederholt sich ein P...
Integration in Zend Studio• Zend Server integriert Zend Studio und bietet die  Möglichkeit, ein Event nochmals durchzuführ...
Zend Framework Monitoring mit Zend Server• Alle Monitoring Funktionen von Zend Server arbeiten  natürlich auch für Zend Fr...
Zend Framework Monitoring mit Zend Server• All automatic monitoring capabilities of Zend Server also  work for Zend Framew...
Release von PHP Code in die Produktion• PHP Code sollte fehlerfrei (zumindest ohne E_WARNING und E_ERROR), wenn es releast...
Code Tracing – Data Capture• Reproduktion ist nicht immer möglich   Abhängigkeit von spezifischem SESSION-Status.   Abhä...
Code Tracing               © All rights reserved. Zend Technologies, Inc.
Code Tracing• Code Trace-Daten werden generiert durch  manuelle Requests  Monitoring-Events  Durch API• Code Tracing er...
Zend Server Code Tracing:Verringert die Zeit der Ursachenanalyse• Speichert den Live-Anwendungsablauf bei Problemauftritt•...
Demo!   © All rights reserved. Zend Technologies, Inc.
Dankeschön!jan@zend.com               © All rights reserved. Zend Technologies, Inc.
WebinarDas Webinar kann hier angeschaut werden:http://www.zend.com/de/webinar/PHP/70170000000bTBC-Troubelshooting-PHP-issu...
Nächste SlideShare
Wird geladen in …5
×

Troubleshooting PHP Issues: Gute (und schlechte) Techniken

1.033 Aufrufe

Veröffentlicht am

Dies sind die Präsentationsfolien des Zend Webinars "Troubleshooting PHP Issues: Gute (und schlechte) Techniken".

Zu verstehen, warum Ihre PHP Applikation so langsam läuft oder einfach nicht funktioniert ist oft zeitaufwändig und fast immer frustrierend. Erfahren Sie in diesem Webinar, welche Techniken PHP-Profis einsetzen, um PHP Probleme in der Entwicklung, im Testing und der Produktion zu identifizieren. Sehen Sie, welche Technik wann und wie einzusetzen ist.

Sprecher – Jan Burkl

Das dazugehörige Webinar kann unter http://bit.ly/oMw3QZ angeschaut werden, nach einer kurzen, kostenlosen Registrierung.

Veröffentlicht in: Technologie
1 Kommentar
0 Gefällt mir
Statistik
Notizen
  • Dies sind die Präsentationsfolien des Zend Webinars 'Troubleshooting PHP Issues: Gute (und schlechte) Techniken'.

    Das dazugehörige Webinar kann unter http://bit.ly/oMw3QZ angeschaut werden, nach einer kurzen, kostenlosen Registrierung.
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.033
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
1
Kommentare
1
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Troubleshooting PHP Issues: Gute (und schlechte) Techniken

  1. 1. Troubleshooting PHP IssuesJan BurklSystem Engineerjan@zend.comDas Webinar kann hier angeschaut werden:http://www.zend.com/de/webinar/PHP/70170000000bTBC-Troubelshooting-PHP-issues-20110301-DE.flv © All rights reserved. Zend Technologies, Inc.
  2. 2. Code Qualität und der Einfluss aufEntwicklungszeit und -kosten Quelle: Boehm und Papaccio Studie• Fehlerhafter Code verbraucht typischerweise zwischen 40% und 50% der gesamten Projektkosten• Jede für Fehlersuche und Fehlerbehebung aufgebrachte Stunde in der Entwicklung reduziert die Maintenance Zeit um 3 bis 10 Stunden• Leider werden nicht alle Bugs während der Entwicklungs- oder Q/A-Phase entdeckt… © All rights reserved. Zend Technologies, Inc.
  3. 3. Was werden wir heute besprechen? Typen von PHP Problemen Error Logging Probleme reproduzieren Code Tracing Demo © All rights reserved. Zend Technologies, Inc.
  4. 4. Allgemeine PHP Issues E_ERROR (Fatal Errors) E_WARNING (Problematisch, aber keine Fatal Errors) E_NOTICE (nicht kritisch, können auf ein Fehler hinweisen) E_PARSE (nicht zur Laufzeit, durch den Parser generiert) E_STRICT (Vorschläge) E_RECOVERABLE_ERROR (Catchable Fatal Error, seit PHP 5.2) E_DEPRECATED (seit PHP 5.3) E_USER_* (User generierte Events, durch trigger_error()) © All rights reserved. Zend Technologies, Inc.
  5. 5. Andere Problemtypen• Logische Fehler  Z.B. inkorrekte Berechnungen, fehlerhafte SQL Querys, etc.• Schlechte Performance  Z.B. teure Datenbankzugriffe, Speicherverbrauch, etc.• Security Issues  Z.B. Code Angreifbarkeit, PHP Settings• Diese Probleme äußern sich nicht in PHP Fehlern © All rights reserved. Zend Technologies, Inc.
  6. 6. PHP Errors – Best Practices Während Entwicklungs- und Testphase sollten alle Fehler angezeigt werden:  error_reporting = E_ALL  display_errors = on Im Produktionsumfeld nur die wichtigsten Fehler aktivieren:  error_reporting = E_ALL & ~E_NOTICE  display_errors = off• Zur Laufzeit können error_reporting() und ini_set(“display_errors”, value) benutzt werden © All rights reserved. Zend Technologies, Inc.
  7. 7. BeispielDieses Beispiel erzeugt eine Notice, zwei Warnungenund einen Fatal Error: <?php error_reporting(E_ALL); ini_set(display_errors, 1); $num = 5 / $div; require utility.inc;• Notice: Undefined variable: div in test.php on line 4• Warning: Division by zero in test.php on line 4• Warning: require(utility.inc) [function.require]: failed to open stream: No such file or directory in test.php on line 5• Fatal error: require() [function.require]: Failed opening required utility.inc (include_path=.:...) in test.php on line 5 © All rights reserved. Zend Technologies, Inc.
  8. 8. Custom Errors Events• Ein aus PHP heraus generiertes Event wird an den Default Output gesendet• Die Events können in ein Log File geschrieben werden  error_log Direktive in php.ini• Der Error Handler kann mit Hilfe der Funktion set_error_handler() angepasst werden • Z.B. eine E-Mail an den Admin bei einem Error schicken• Fatal Errors können nicht mit set_error_handler() behandelt werden• Zur Erinnerung: Fatal Errors (E_ERROR) stoppen die Ausführung eines PHP Skripts! © All rights reserved. Zend Technologies, Inc.
  9. 9. Zend Studio: Probleme während derEntwicklung und des Testens lokalisieren• Parse Errors (E_PARSE) entdecken ohne den Code auszuführen• Aufspüren von logischen Fehlern, die Fatal Errors bedingen könnten• Lokales oder Remote Debugging (mit Zend Server)• Code Profile  Performance Probleme finden  Code Coverage benutzen © All rights reserved. Zend Technologies, Inc.
  10. 10. No need to die()…• Zend_Log, Firebug, FirePHP protected function _initLog() { $writer = new Zend_Log_Writer_Firebug(); $logger = new Zend_Log($writer); Zend_Registry::set(logger, $logger); } // Controller action $logger = Zend_Registry::get(logger); $logger->info(event: . $eventId); $logger->info($event); $logger->warn("event starts after 3pm"); $logger->err($exception); © All rights reserved. Zend Technologies, Inc.
  11. 11. No need to die()…• Zend_Log, Firebug, FirePHP protected function _initLog() { $writer = new Zend_Log_Writer_Firebug(); $logger = new Zend_Log($writer); Zend_Registry::set(logger, $logger); } // Controller action $logger = Zend_Registry::get(logger); $logger->info(event: . $eventId); $logger->info($event); $logger->warn("event starts after 3pm"); $logger->err($exception); © All rights reserved. Zend Technologies, Inc.
  12. 12. PHP Error Logs für Troubleshooting• Error Logs sind hilfreich während der Entwicklung, des Testens und in der Produktion• Trotzdem gibt es einige Begrenzungen Keine Hilfe bei Performance Problemen Keine Hilfe bei logischen Fehlern Notwendigkeit der Problemreproduktion – schwierig in der Produktion! Bietet nur eine beschränkte Sicht auf die Probleme – es fehlt der Kontext © All rights reserved. Zend Technologies, Inc.
  13. 13. Application Level Monitoringin Zend Server• Zend Server Monitor überwacht die Applikation nach:  PHP Fehlern (einschließlich Warnings, Notices, Uncaught Exceptions, …)  Fehlgeschlagene Funktionsaufrufe (user-defined oder intern)  Fehlgeschlagene DB Querys  Langsame Funktionsaufrufe (user-defined oder intern)  Slow Request Execution  Hoher Speicherverbrauch  Von Zend Server Komponenten entdeckte Fehler © All rights reserved. Zend Technologies, Inc.
  14. 14. Zend Server - Events © All rights reserved. Zend Technologies, Inc.
  15. 15. Ursachenanalyse• Wiederkehrende Events werden aggregiert und auf einer Zeitleiste angeordnet  Wann wiederholt sich ein Problem?• Jeder Event Report beinhaltet Kontext Informationen, die beim Debuggen unterstützen  URL, File, Line, Error Message, Repeat Count, etc.  Request Information (GET, POST, COOKIE, etc.)  Server Information  Session Information  Backtrace (wenn relevant) © All rights reserved. Zend Technologies, Inc.
  16. 16. Integration in Zend Studio• Zend Server integriert Zend Studio und bietet die Möglichkeit, ein Event nochmals durchzuführen  In einer Debug Session  In einer Profile Session  Durch einen Klick in der GUI  … oder, durch Exportieren der Event Daten, danach Import in die IDE  “Replay” auf alternativem Test Server• In vielen Fällen eliminiert es die Zeit zur Reproduktion © All rights reserved. Zend Technologies, Inc.
  17. 17. Zend Framework Monitoring mit Zend Server• Alle Monitoring Funktionen von Zend Server arbeiten natürlich auch für Zend Framework Applikationen• Zend_Log_Writer_ZendMonitor() © All rights reserved. Zend Technologies, Inc.
  18. 18. Zend Framework Monitoring mit Zend Server• All automatic monitoring capabilities of Zend Server also work for Zend Framework projects just like any other PHP application• Zend_Log_Writer_ZendMonitor() can save © All rights reserved. Zend Technologies, Inc.
  19. 19. Release von PHP Code in die Produktion• PHP Code sollte fehlerfrei (zumindest ohne E_WARNING und E_ERROR), wenn es releast wird• Warum treten trotzdem Fehler in der Produktion auf? • Unterschiede in der Produktionsumgebung • Andere Last in der Produktion • Echte User nutzen die Applikation anders als Entwickler und Tester antizipiert haben • Infrastrukturkomponenten oder Back-End Systeme schlagen fehl oder ändern sich • Murphys law - "Anything that can go wrong will go wrong.“  © All rights reserved. Zend Technologies, Inc.
  20. 20. Code Tracing – Data Capture• Reproduktion ist nicht immer möglich  Abhängigkeit von spezifischem SESSION-Status.  Abhängigkeit von spezifischem Datenbank-Status.  “Wiederholung“ des Requests ist riskant oder unmöglich.• Code Tracing ist in der Lage den gesamten Execution Flow zu erfassen.  Execution Tree inklusive Funktionsaufrufen und inkludierten Files.  Funktions-Argumente und Return-Parameter.  Output und HTTP-Header-Generierung.  Lokation von Fehlern, Exceptions und Zend Monitor Events.  Für jeden Knoten wird Ausführungszeit und Speicherverbrauch gemessen. © All rights reserved. Zend Technologies, Inc.
  21. 21. Code Tracing © All rights reserved. Zend Technologies, Inc.
  22. 22. Code Tracing• Code Trace-Daten werden generiert durch  manuelle Requests  Monitoring-Events  Durch API• Code Tracing erfasst folgende Informationen:  Execution Tree inklusive Funktionsaufrufen und inkludierten Files.  Funktions-Argumente und Return-Parameter.  Output und HTTP-Header-Generierung.  Lokation von Fehlern, Exceptions und Zend Monitor Events.  Für jeden Knoten wird Ausführungszeit und Speicherverbrauch gemessen. © All rights reserved. Zend Technologies, Inc.
  23. 23. Zend Server Code Tracing:Verringert die Zeit der Ursachenanalyse• Speichert den Live-Anwendungsablauf bei Problemauftritt• Aktivierung durch Zend-Server Monitoringregeln oder manuell• Funktioniert im Produktions- oder im Testumfeld - eliminiert die Notwendigkeit Probleme zu reproduzierenProblemlösungszeit Ursachen-Analyse Lösungohne Code Tracing Problemreproduktion – Debug Ursachen-AnalyseProblemlösungszeit Lösung Code Trace-Analysemit Code Tracing © All rights reserved. Zend Technologies, Inc.
  24. 24. Demo! © All rights reserved. Zend Technologies, Inc.
  25. 25. Dankeschön!jan@zend.com © All rights reserved. Zend Technologies, Inc.
  26. 26. WebinarDas Webinar kann hier angeschaut werden:http://www.zend.com/de/webinar/PHP/70170000000bTBC-Troubelshooting-PHP-issues-20110301-DE.flvoderhttp://bit.ly/oMw3QZ(nach einer kurzen Registrierung)26 © All rights reserved. Zend Technologies, Inc.

×