PEPPERSHOP DEVELOPMENT MODUL - ENTWICKLERTOOLS - DATUM

Die Seite wird erstellt Felix Nowak
 
WEITER LESEN
PEPPERSHOP DEVELOPMENT MODUL - ENTWICKLERTOOLS - DATUM
PepperShop Development Modul
Entwicklertools

Datum
21. Mai 2019

Version
1.3
PEPPERSHOP DEVELOPMENT MODUL - ENTWICKLERTOOLS - DATUM
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
PEPPERSHOP DEVELOPMENT MODUL - ENTWICKLERTOOLS - DATUM
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