PEPPERSHOP DEVELOPMENT MODUL - ENTWICKLERTOOLS - DATUM
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Inhaltsverzeichnis 1. Einleitung..........................................................................................................................................................3 2. Dateien und Verzeichnisse..............................................................................................................................3 3. Konfiguration....................................................................................................................................................3 4. Aktivierung des Moduls....................................................................................................................................4 5. Debug Bar..........................................................................................................................................................4 5. Detaillierte Fehlerberichte mit Whoops..........................................................................................................6 6. Readyness-, Liveness Checks und Bootstrap Debugger................................................................................7 7. Buildsystem für PepperShop...........................................................................................................................8 PepperShop wird von Glarotech entwickelt und vertrieben. Glarotech GmbH Seit 1998 ist das innovative Unternehmen im Internet tätig Toggenburgerstrasse 156 und auf E-Commerce spezialisiert. Sie als Kunde profitieren CH-9500 Wil vom direkten Draht zu den Herstellern der Produkte. info@glarotech.ch Tel. +41 (0)71 923 08 58 www.glarotech.ch
1. Einleitung Wenn das Development Modul aktiviert wird, hilft dies bei der Software Entwicklung im PepperShop. Es gibt Settings für Development Umgebungsvariablen (SQL-Profiling, E_ALL-Meldungen, …), ein Tool zur Visualisierung von Laufzeitinformationen inkl. Timing Messdaten und ein Handler bei Fehlermeldun- gen, um Infos rund um die Situation zu haben und schnell zu der relevanten Codestelle zu gelangen. Die meisten Dateien werden direkt im Core mitgeliefert. Die Angaben in dieser Anleitung gelten für PepperShop ab Version 7.0. 2. Dateien und Verzeichnisse Moduldateien: {shop_verzeichnis}/show_todo.sh {shop_verzeichnis}/phpepperdoc.cfg (discontinued) {shop_verzeichnis}/shop/development_config.php (wird im PepperShop Core mitgeliefert) {shop_verzeichnis}/shop/module/development/ (wird im PepperShop Core mitgeliefert) 3. Konfiguration Die zentrale Konfiguration des Moduls wird via development_config.php gesetzt. Man sollte aber nicht dort seine Änderungen durchführen, sondern eine neue Datei im gleichen shop-Unterverzeichnis erstellen mit Namen: custom_development_config.php. Beispielinhalt einer Custom Definition:
'DEVELOPMENT_CUSTOM_ADMIN_HEADER_ATTR' => 'style="background- color:#B30202; color:white;"' 'DEVELOPMENT_ERROR_HANDLER' => '\pps\module\development\ helper::error_handler_ with_backtrace' Dann sieht man in den Logs jeweils gerade die SQLs die lange brauchen.. 'DB_KLASSE' => 'ProfilingTMySQLiDatabase' Sollen E-Mails versendet werden? (Betrifft HTML_EMAIL Klasse / Modul Advanced Secure Mailer): 'DEVELOPMENT_SEND_MAILS' => true 'USE_DEBUGBAR' => is_dir(__DIR__ . '/module/ development/lib/phpdebugbar') 'USE_DEBUGBAR_RELOAD_WITH_AJAX' => true 'DEVELOPMENT_WHOOPS_EDITOR_REPLACEMENT' => '/home/\1/public_html/' 'DEVELOPMENT_LOG_BESTELLUNG_EXTERN_ABSCHLIESSEN' => true In der DB nur mit korrekten Typen weiterarbeiten? 'DEVELOPMENT_DB_STRICT_TYPES' => true Achtung: Einstellungen haben weitreichende Auswirkungen, insbesondere für die Performance. 4. Aktivierung des Moduls Grundsätzlich: Auf einem produktiven System, das Development Modul grundsätzlich nie aktivieren. Es gibt verschiedene Einsatzzwecke für das Development Modul: • Entwicklungsumgebung, konstante Aktivierung: Im ersten Fall, möchte man das Modul ständig aktiv haben für alle Aufrufe die getätigt werden: define('DEVELOPMENT_MODE',true); • Debugging in Stage-System oder Live-System nur von einem spezifischen Rechner aus: Im zweiten Fall, möchte man das Development nur für gewisse Rechner aktivieren: // define('DEVELOPMENT_MODE',true); // darf nicht definiert sein define('DEVELOPMENT_ACTIVE_IP_ADDR', ['192.168.1.80']); Infos zur Aktivierung per IP-Adresse: • Im Array bitte nur IP-Adressen eingeben, keine IP-Bereiche • Eine define('DEVELOPMENT_MODE',true); Definition hat hoerere Prioritaet! (Freigabe für alle) 5. Debug Bar Vor allem die PepperShop Debug Bar bringt viele Vorteile bei der Entwicklungsarbeit für PepperShop. Seite 4/8 www.peppershop.com
Schaubild 1: Beispielanzeige der PepperShop Debug Bar Aktivierung der Debug Bar: 1. Zuerst muss die Library entpackt werden: cd shop/module/development/lib tar xfz phpdebugbar.tar.gz 2. Die Debug Bar wird in der oben in Kapitel 3 erwähnten Konfigurationsdatei mit 'USE_DEBUG- BAR'= true aktiviert. Was sieht man? Mit der Debug Bar werden verschiedene Elemente einfach sichtbar: • Messages: Infomeldungen des Systems zu diesem Aufruf • Request: Übergebene Werte (GET, POST, COOKIE, SERVER, ENV, SESSION (raw/geparsed)) • Timeline: Timeline des Aufrufs (Page Calls) Seite 5/8 www.peppershop.com
• DB: Datenbank SQLs • DB time: Datenbank SQLs angeordnet nach Zeitkonsum pro SQL • Debug: Debugmeldungen via Funktion debug_bar($msg,..) • Connection: Verbindungsinformationen • Transactions: PepperShop Bestellungstransaktionen • Log: Daten für Logfiles • Session: Session Debug Header • Templates: HTML-Templates Verwendung und File-Paths • Memory Usage: Verbrauchtes RAM zur Verarbeitungs des Requests • Request Duration: Zeit, die benötigt wurde, den Request zu verarbeiten • PHP Version • History aller Calls • Fenstersteuerung der Bar (offen / Statuszeile / Button) Debugging und Logging / Aufrufe im Code: Man sollte immer logger_bar(..) / debug_bar(..) verwenden, anstatt z.B. debug(..). Beispiele Debugging und Logging: logger_bar::log_debug(['My Message',null],'my_label'); debug_bar($some_var); AJAX: • Alle Daten von den Request werden gespeichert in shop/resources/phpdebugbar/ • Bei der phpdebugbar einfacha uf Ordner klicken und man sieht alle Request. Dort eine Auswählen. Nachfolgend sind in der debugbar alle Infos enthalten Info: Gewisse Datenbankspezifische Anzeigen sind davon abhängig, dass man als DB_KLASSE 'Profi- lingTMySQLiDatabase' verwendet. Dies hat Auswirkungen auf die Performance! Wichtig: Wenn die Modulaktivierung per IP-Freigabe erfolgt ( DEVELOPMENT_ACTIVE_IP_ADDR), werden Server-to-Server Calls nicht mit aktiviertem Development Modul verarbeitet! 5. Detaillierte Fehlerberichte mit Whoops Aktivierung / Deaktivierung der Whoops Fehlerinfoseiten: 3. Aktivierung: Es muss die Library entpackt werden: cd shop/module/development/lib tar xfz whoops.tar.gz 4. Deaktivierung: Das whoops Verzeichnis in shop/module/development/lib löschen. phpstorm Editor Verknüpfung: Wer möchte, kann die Fehlermeldung auch direkt mit phpstorm verknüpfen. Dazu in der Konfigurations- datei (siehe Kapitel 3) wie folgt konfigurieren (Pfad zum Shop-Verzeichnis angeben): define('DEVELOPMENT_WHOOPS_EDITOR_REPLACEMENT','C:/htdocs/public_html/'); Seite 6/8 www.peppershop.com
Um unsichere Verbindungen zu erlauben: phpstorm -> settings -> Build,Execu... -> Debugger -> Allow un- signed requests (Häkchen setzen) Schaubild 2: Beispiel einer Whoops formatierten PHP Fehlermeldung Whoops-Meldungen Fenster Infos: • Mit Klick auf den Button 'whoops schliessen' wird der Inhalt der Page angezeigt • Mit Klick auf den Ort, landet man bei verknüpftem phpstorm exakt bei der problematischen Zeile 6. Readyness-, Liveness Checks und Bootstrap Debugger Um einfach zu prüfen, ob das System korrekt installiert oder gerade zugreifbar ist, gibt es für PepperShop vorbereitete Readyness und Liveness Checks. Insbesondere im Container / Cloud-Betrieb ist dies eine wichtiger Basis fürs Monitoring der Shop-Container. Seite 7/8 www.peppershop.com
Liveness Check: status/check_no_db.php: Bindet PepperShop API ohne die Datenbank ein, prüft ob ein Customer separated Verzeichnis* lesbar ist und retourniert true in einem JSON Array, Beispielausgabe: { "include": true, "separator_dir_access": true, "all_checks_ok": true } Readyness Check: status/index.php: Bindet PepperShop API mit DB ein, prueft ebenfalls ob ein Customer separated Verzeichnis lesbar ist und retourniert true in einem JSON Array, Beispielausgabe: { "include": true, "separator_dir_access": true, "db": true, "all_checks_ok": true } Debugging / Bootstrapping Check: status/debug.php: Kann verschiedene Tests und Benchmarks ausführen (siehe Konfiguration oben (webserver/db/api/benchmarks). Benchmarks steuerbar via ?benchmarks=true). Beispielausgabe: PepperShop Debug Output, 2019-05-07 15:00:00: my-server-system.com [ Time per job ][ Time total ] Type : Description --------------------------------------------------------------------------------------------------------- --- [ 5.7318211 ms][ 5.7318211 ms] ** START ** : Start debugging output [ 0.0550747 ms][ 5.7868958 ms] webserver : simple direct output (implicit flush() call) [ 0.0081062 ms][ 5.7950020 ms] db : start db library includes.. [ 0.3538132 ms][ 6.1488152 ms] db : start db initialization.. [ 1.1281967 ms][ 7.2770119 ms] db : mysqli_connect done [ 0.1409054 ms][ 7.4179173 ms] db : mysqli_select_db done [ 0.6690025 ms][ 8.0869198 ms] db : simple sql query done (SELECT * FROM shop_settings_new) [ 0.1749992 ms][ 8.2619190 ms] pps_api : config.inc.php (configs) done [ 4.5490265 ms][ 12.8109455 ms] pps_api : always_include_basic_no_db.php (do_first, autoload, util+init_no_db) done [ 2.1970272 ms][ 15.0079727 ms] pps_api : always_include_basic_no_session.php (db) done [ 9.1478825 ms][ 24.1558552 ms] pps_api : always_include_basic.php (session, includes, util_init) done [ 3.3090115 ms][ 27.4648666 ms] pps_api : always_include.php (more includes, classes, UAH, B2B) done [ 0.6091595 ms][ 28.0740261 ms] dir_acc : customer separator data dir access result: Ok, accessible [ 70.3899860 ms][ 98.4640121 ms] benchmarks : compute (5000 products created and populated in memory) [ 608.2348824 ms][ 706.6988945 ms] benchmarks : db (3 runs) [ 150.6149769 ms][ 857.3138714 ms] benchmarks : core_files_read (360 files read + recursive dirs traversed (7402 files)) [ 62.0810986 ms][ 919.3949699 ms] benchmarks : core_files_read (360 files read+written) [ 9.3109608 ms][ 928.7059307 ms] benchmarks : cust_files_read (202 files read) [ 38.8441086 ms][ 967.5500393 ms] benchmarks : cust_files_write (202 files read+written) [ 0.0319481 ms][ 967.5819874 ms] ** END ** : ...all debug messages processed * Customer Separator: PepperShop kann betrieben werden, so dass Kundendateien via Softlinks in die entsprechenden Core Dateien eingebunden und gemapped werden. 7. Buildsystem für PepperShop Für PepperShop existiert auch ein eigenes Buildsystem namens "iu" (install / uninstall). Sollte dies für Sie von Interesse sein, nehmen Sie bitte Kontakt mit dem PepperShop Hersteller Glarotech GmbH auf. Seite 8/8 www.peppershop.com
Sie können auch lesen