SlideShare ist ein Scribd-Unternehmen logo
php im high-end ::: eine case-study zur 1&1 internet ag stephan schmidt 1&1 internet ag
Was ist High-End? Die 1&1 Internet AG Anforderungen an das System Zahlen und Fakten Seitenstruktur und Architektur Konfiguration Performanceoptimierungen Bestellprozesse agenda::
High-End: am oberen Ende von etwas. Hohe Anzahl an Usern, Page Views Hoher Umsatz Hoher Funktionalitätsumfang Hohe Frequenz von Änderungen … was ist high-end::
PHP = Personal Homepage entwickelt für kleine Anwendungen Interpreter-Sprache (kein Compiler) in HTML eingebettet PHP im High-End, ein Widerspruch? Nein, PHP= PHP Hypertext Preprocessor php im high-end::
Gegründet 1988 Teil der United Internet AG (GMX, AdLink) Großes Leistungsspektrum Hosting (größter Hoster weltweit) Access-Produkte UMS, 0700 über 3 Millionen Kunden / 4,5 Millionen Domains Agiert weltweit die 1&1 internet ag::
Großes Netzwerk an Websites 1und1.de (Portal) Produkt-Seiten mit Bestellmöglichkeit DSL Hosting Internet-Zugänge start.1und1.de (Newsaggregator) Konfigurationsmenüs die websites::
Websites und verwandte Dienste basieren auf den verschiedensten Technologien Java C/C++ PHP3/PHP4 MySQL Sybase heterogene umgebung::
ca. 180 statische Seiten Online DSL Bestellung Warenkorb Lieferdaten Verfügbarkeits-Check Interaktiver Berater Einsteiger-Tour fallbeispiel > dsl.1und1.de::
Performant Durch Producer pflegbar Kommunikation mit externen Diensten SOAP REST Stored Procedures Proprietäre Systeme Variantenfähig Design unabhängig von Logik anforderungen::
Umfangreiche Logs zur Erfolgsmessung Keine redundanten Daten flexibel und schnell änderbar Zuordnung von Abschlüssen zu Werbeträgern Usability-gerecht trendy anforderungen 2::
Dient der Erfolgsmessung von neuen Funktionen Ermöglicht Sonderaktionen mit Partner-Websites Alles an der Seite ist veränderbar Design Inhalte (HTML, Text, Artikel, Preise) Abläufe, wie Bestellprozess Schnittstellen (andere Bestellinformationen) varianten::
Zusätzlicher URL Parameter Eindeutig pro Werbeträger (Banner, Redirect) Dient der Erfolgsmessung von Werbeträgern Beeinflusst die Website Graphische Änderungen Änderungen im Bestellprozess Kann Varianten auslösen sonderaktionscodes::
Dient der Analyse von Nutzerverhalten und der Erfolgsmessung von Kampagnen/Aktionen Nicht nur simples Access-Log Pro Request bis zu 5 Logfiles Beliebige Informationen werden gelogged Visits, Page Views, Exit Bestellungen, Warenkorb, Interaktive Funktionen Zusammenhänge zwischen einzelnen Funktionen Interne Logs für Caching, Debugging logkonzept::
ca. 2.000.000 Visitors/Monat ca. 7.500.000 echte Page Views/Monat ca. 3.000.000 vollständig dynamisch erzeugte Seiten ca. 4.000.000 zusätzliche Requests zu Logging-Zwecken ca. 150.000 übertragene MB/Monat an HTML Nur ein Server mit PHP 4.3.4 und Apache 1.x Dual-Processor 2 GB Speicher zahlen- und fakten::
Aufteilen der Seite Linke Navigation Breadcrumb-Navigation Content-Bereich Teaser Fusszeile Warenkorb Meldungen seitenaufbau::
Feste Inhalte Header Footer Seitenabhängige Inhalte Navigationen Content Session- /Userabhängige Inhalte Warenkorb Meldungen seiteninhalte::
Vollständig objektorientiert Wiederverwertbarer Code Kapselt Funktionalität Erleichtert Arbeit in verteilten Teams Atomare Klassen Jede Klasse erledigt nur eine Arbeit 10 bis 10.000 Zeilen Code architektur::
Front-Controller Übergabe eines Seitennamens per HTTP Setzt die angeforderte Seite aus verschiedenen Komponenten zusammen Aggregiert Hilfsklassen für Session Management Logging & Debugging Templating Datenbank-Zugriff (bei Bedarf) architektur::
Plugin-Manager statische Methoden zur Integration von Plugins Erlaubt dynamisch Code hinzuzufügen, der bei jedem Seitenaufruf ausgeführt wird (z.B. Warenkorb) Event-Manager statische Methoden erlaubt dynamisch Code hinzuzufügen, der bei bestimmten Ereignissen ausgeführt wird (z.B. bei Bestellung) für alle Benutzer oder benutzerspezifisch architektur::
In die einzelnen Bereiche können verschiedene Komponenten integriert werden: Einbinden statischen HTML-Codes Einbinden eines Templates (erlaubt einfache Logik) Einbinden von Extensions PHP-Objekte liefern dynamischen Content nach Interaktion mit dem User zurück Erhalten Zugriff auf den Controller und Hilfsobjekte komponenten::
Aufbau einer Extension: Einfache PHP-Klasse abgeleitet von einer Basisklasse Muss nur eine public-Methode implementieren, die Content bereitstellt Übergabe von Seitenname und Request-Daten Rückgabe von Content als String oder Fehler-Objekt Controller fügt Rückgabewert im Rahmen ein Perfektes Sandboxing  extensions::
Konfiguration erfolgt über XML-Dateien: Einfach durch Producer pflegbar Können leicht validiert werden Einlesen durch patConfiguration Erlaubt Zuordnung Tag zu PHP-Datentyp Erlaubt xIncludes Bietet Caching der Dateien konfiguration::
structure.xml Layout: Bereiche der Seite, Rahmentemplate Varianten Sonderaktionen Session/Request-Konfiguration pages/foo.xml Definieren der Inhalte einer Seite navigations/foo.xml Definieren einer Navigationsstruktur konfigurationsdateien::
Sonstige Dateien Bestellschritte Bestellprozesse Schnittstellen zur Bestellung (Stored Procedure) Artikel-Daten Artikel-Strings Sonderaktionscodes konfigurationsdateien 2::
<page name=&quot;index&quot;> <navigation>default</navigation> <contents> <item>   <action>includeTemplate</action>   <href>static/home.tmpl</href> </item> </contents> <teasers> <item>   <action>loadExtension</action>   <href>ucuoDSLCheck</href> </item> </teasers> </page> definieren einer seite::
Konfiguration laden Rahmentemplate laden Seiteninhalte erzeugen  Navigation erzeugen Aufruf der Plugins Schreiben der Logfiles Ausgabe life-cycle eines requests::
Hautproblem: Einlesen der Templates und Generieren des Inhaltes. Einsetzen von Caching: Template-Cache durch patTemplate Vermeidet preg_* Funktionen Cachen von ganzen Seiten Cachen einzelner Komponenten Ausliefern von GZIP-Content Conditional GET performance::
Statische Seiten aus Cache ausliefern Erzeugen eines Cache-Keys unter Berücksichtigung von Javascript/Browser Variante Actioncode Extensions können auch gecached werden Plugins können Daten nach dem Caching einfügen (unterschiedlich pro Session) caching::
Verringern der zu übertragenden Datenmengen Zippen der Cache-Files 20% des HTML-Codes Nur wenn User Cookies hat (Session-ID) Conditional-GET Eindeutige ID der Seite (Cache-Key) an Browser schicken Client schickt ID zurück Server kann statt Daten 304/Not Modified schicken 3% aller Seiten, 5 GB pro Monat caching 2::
Konfiguration laden Rahmentemplate laden Seiteninhalte erzeugen  Navigation erzeugen Aufruf der Plugins Schreiben der Logfiles Ausgabe life-cycle eines requests mit caching:: kann durch file_get_contents() ersetzt werden kann durch unserialize() ersetzt werden kann durch header('HTTP 1.x 304/Not Modified') ersetzt werden
Bestellprozess ist das Herzstück der Seite ucuoOrder Extension ist Controller im Controller Jeder Bestellschritt (=Formular) ist eine Extension Können beliebig kombiniert werden (XML-Dateien) Reihenfolge Abhängigkeiten (Überprüfe Bankdaten nach Änderung der Adressdaten) Bedingungen für einzelne Schritte (zeige Funkmodule nur an, wenn Router gewählt wurde) bestellprozesse::
Vollständige Diskussion der Bestellprozesse würde den Rahmen der Präsentation sprengen mehrere 100kb PHP Code Variantenfähig Dedizierter Conversion-Manager konzipieren neuer Prozesse Auswerten der Bestell-Logs Erfolgsanalyse der Tests bestellprozesse 2::
1&1 setzt auf Open-Source: patTemplate patConfiguration PEAR DB SOAP XML_Serializer Mail HTTP_* open source::
vielen dank für ihre aufmerksamkeit. [email_address] http://www.schst.net | http://www.php-tools.net

Weitere ähnliche Inhalte

Was ist angesagt? (15)

PDF
Typo3 und Varnish
Oliver Thiele
 
PPTX
Object-orientied way of using mysqli interface - Workshop
Waldemar Dell
 
ODP
Schnittstellen und Webservices
Jakob .
 
ODP
PhpStorm 6 Configuration for TYPO3
marco-huber
 
PDF
TYPO3 CMS 7.2 - Die Neuerungen - pluswerk
die.agilen GmbH
 
ODP
Ajax hands on - Refactoring Google Suggest
Bastian Feder
 
PPT
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Mario Müller
 
PDF
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
die.agilen GmbH
 
PDF
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
die.agilen GmbH
 
PDF
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
die.agilen GmbH
 
PDF
Javascript done right
Dirk Ginader
 
PDF
Einstieg in Xpath für SEO (Campixx2021)
Sebastian Adler
 
PDF
TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
die.agilen GmbH
 
PDF
Morphia, Spring Data & Co
Tobias Trelle
 
ODP
Websemantik: Die nächsten Schritte
Michael Jendryschik
 
Typo3 und Varnish
Oliver Thiele
 
Object-orientied way of using mysqli interface - Workshop
Waldemar Dell
 
Schnittstellen und Webservices
Jakob .
 
PhpStorm 6 Configuration for TYPO3
marco-huber
 
TYPO3 CMS 7.2 - Die Neuerungen - pluswerk
die.agilen GmbH
 
Ajax hands on - Refactoring Google Suggest
Bastian Feder
 
Dokumentenorientiere Datenbanken am Beispiel CouchDB
Mario Müller
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
die.agilen GmbH
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
die.agilen GmbH
 
TYPO3 CMS 8.1 - Die Neuerungen - pluswerk
die.agilen GmbH
 
Javascript done right
Dirk Ginader
 
Einstieg in Xpath für SEO (Campixx2021)
Sebastian Adler
 
TYPO3 CMS 7.6 - Die Neuerungen - pluswerk
die.agilen GmbH
 
Morphia, Spring Data & Co
Tobias Trelle
 
Websemantik: Die nächsten Schritte
Michael Jendryschik
 

Andere mochten auch (20)

PPTX
Sony vaio serie s
William Henry Vegazo Muro
 
PPT
Vortrag gpa
Werner Drizhal
 
PDF
Entscheidungen
Werner Drizhal
 
PDF
PM_CB.e_Wie gelingt Kommunikation im digitalen Zeitalter
Elisabeth Kurkowski
 
PDF
Personelles
Werner Drizhal
 
PDF
Jahresbericht 2013
Bernhard Weber
 
PDF
AYAB PROFILE BIG2015
AYAB Advertising
 
PPT
8.6 G Website
jszpaich
 
PDF
Doenges CATALOG קטלוג דונגס
gutman barzilai company
 
PPT
Dauer Der Arbeitslosigkeit
Werner Drizhal
 
PDF
Reform Der Arbeitszeit
Werner Drizhal
 
PPT
Ebr Basics 02 2010
Werner Drizhal
 
PPT
Bmask soziales jahr
Werner Drizhal
 
PDF
InfoNet Day 2015: Session Business Booster Search - SharePoint Search ausreizen
Bernhard Wyss
 
PPT
Wege auskrisebasisvortrag13 02_2012_kurz
Werner Drizhal
 
PDF
Fotoprotokoll 62 A Und 63 A
Werner Drizhal
 
PPT
Antimobbing
Werner Drizhal
 
PDF
DRAWINGS-11-15
Ahmed Ghieh
 
PDF
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
Stephan Schmidt
 
Sony vaio serie s
William Henry Vegazo Muro
 
Vortrag gpa
Werner Drizhal
 
Entscheidungen
Werner Drizhal
 
PM_CB.e_Wie gelingt Kommunikation im digitalen Zeitalter
Elisabeth Kurkowski
 
Personelles
Werner Drizhal
 
Jahresbericht 2013
Bernhard Weber
 
AYAB PROFILE BIG2015
AYAB Advertising
 
8.6 G Website
jszpaich
 
Doenges CATALOG קטלוג דונגס
gutman barzilai company
 
Dauer Der Arbeitslosigkeit
Werner Drizhal
 
Reform Der Arbeitszeit
Werner Drizhal
 
Ebr Basics 02 2010
Werner Drizhal
 
Bmask soziales jahr
Werner Drizhal
 
InfoNet Day 2015: Session Business Booster Search - SharePoint Search ausreizen
Bernhard Wyss
 
Wege auskrisebasisvortrag13 02_2012_kurz
Werner Drizhal
 
Fotoprotokoll 62 A Und 63 A
Werner Drizhal
 
Antimobbing
Werner Drizhal
 
DRAWINGS-11-15
Ahmed Ghieh
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
Stephan Schmidt
 
Anzeige

Ähnlich wie PHP im High End (20)

PDF
Webanwendungen - Installation, Konfiguration und Administration
Thomas Siegers
 
PDF
Performance durch Caching
AOE
 
PDF
Performance durch Caching
AOE
 
PPTX
Frontend-Architektur der 1&1 Bestellsysteme
Nico Steiner
 
PDF
Globetrotter @ E-Commerce Hacktable HH
Sebastian Heuer
 
PDF
PHP Module als Rundum-Sorglos-Pakete entwickeln
Ralf Eggert
 
PDF
Cache me if you can
Mario Müller
 
PPT
Frontend-Performance @ IPC
Nico Steiner
 
PPT
Frontend-Performance mit PHP
Frank Kleine
 
PDF
382726314 X Php5 In 14 Tagen (Ddt)
guest943d41
 
PDF
PHP-Module in statischen Seiten - Architektur-Ansätze
Ralf Lütke
 
ODP
Php Tutorium
AVGP
 
PPT
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
stijink
 
PDF
Zeitgemäße Webentwicklung
Stephan Lindauer
 
PDF
High performance mit PHP
Thomas Burgard
 
PDF
Campixx 2012-ladezeit-extreme
Alexander Merkel
 
PPT
2. Technologie-Tag - Frontend Architektur
Nico Steiner
 
PDF
Qualitätsmanagement für Web- und PHP Applikationen
Manuel Blechschmidt
 
PDF
Besser php programmieren - Von der Klasse über Unittests, Cruisecontrol, Seli...
teena77
 
PDF
Besser php entwickeln - Erstentwurf
Günther Haslbeck
 
Webanwendungen - Installation, Konfiguration und Administration
Thomas Siegers
 
Performance durch Caching
AOE
 
Performance durch Caching
AOE
 
Frontend-Architektur der 1&1 Bestellsysteme
Nico Steiner
 
Globetrotter @ E-Commerce Hacktable HH
Sebastian Heuer
 
PHP Module als Rundum-Sorglos-Pakete entwickeln
Ralf Eggert
 
Cache me if you can
Mario Müller
 
Frontend-Performance @ IPC
Nico Steiner
 
Frontend-Performance mit PHP
Frank Kleine
 
382726314 X Php5 In 14 Tagen (Ddt)
guest943d41
 
PHP-Module in statischen Seiten - Architektur-Ansätze
Ralf Lütke
 
Php Tutorium
AVGP
 
Entwicklungsprozess und Arbeit mit Symfony2 in der fotocommunity GmbH
stijink
 
Zeitgemäße Webentwicklung
Stephan Lindauer
 
High performance mit PHP
Thomas Burgard
 
Campixx 2012-ladezeit-extreme
Alexander Merkel
 
2. Technologie-Tag - Frontend Architektur
Nico Steiner
 
Qualitätsmanagement für Web- und PHP Applikationen
Manuel Blechschmidt
 
Besser php programmieren - Von der Klasse über Unittests, Cruisecontrol, Seli...
teena77
 
Besser php entwickeln - Erstentwurf
Günther Haslbeck
 
Anzeige

Mehr von Stephan Schmidt (19)

PDF
Das Web Wird Mobil - Geolocation und Location Based Services
Stephan Schmidt
 
PDF
23 Dinge, die Sie über Software Entwicklung in Teams wissen sollten
Stephan Schmidt
 
PDF
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten
Stephan Schmidt
 
PDF
Continuous Integration mit Jenkins
Stephan Schmidt
 
PDF
Die Kunst des Software Design - Java
Stephan Schmidt
 
PDF
PHP mit Paul Bocuse
Stephan Schmidt
 
PDF
Der Erfolgreiche Programmierer
Stephan Schmidt
 
KEY
Die Kunst Des Software Design
Stephan Schmidt
 
PDF
Software-Entwicklung Im Team
Stephan Schmidt
 
PDF
JSON-RPC Proxy Generation with PHP 5
Stephan Schmidt
 
PPT
Declarative Development Using Annotations In PHP
Stephan Schmidt
 
PPT
XML and Web Services with PHP5 and PEAR
Stephan Schmidt
 
PPT
The Big Documentation Extravaganza
Stephan Schmidt
 
PPT
Go OO! - Real-life Design Patterns in PHP 5
Stephan Schmidt
 
PPT
Component and Event-Driven Architectures in PHP
Stephan Schmidt
 
PPT
Session Server - Maintaing State between several Servers
Stephan Schmidt
 
PPT
XML Transformations With PHP
Stephan Schmidt
 
PPT
PEAR For The Masses
Stephan Schmidt
 
PPT
Inroduction to XSLT with PHP4
Stephan Schmidt
 
Das Web Wird Mobil - Geolocation und Location Based Services
Stephan Schmidt
 
23 Dinge, die Sie über Software Entwicklung in Teams wissen sollten
Stephan Schmidt
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten
Stephan Schmidt
 
Continuous Integration mit Jenkins
Stephan Schmidt
 
Die Kunst des Software Design - Java
Stephan Schmidt
 
PHP mit Paul Bocuse
Stephan Schmidt
 
Der Erfolgreiche Programmierer
Stephan Schmidt
 
Die Kunst Des Software Design
Stephan Schmidt
 
Software-Entwicklung Im Team
Stephan Schmidt
 
JSON-RPC Proxy Generation with PHP 5
Stephan Schmidt
 
Declarative Development Using Annotations In PHP
Stephan Schmidt
 
XML and Web Services with PHP5 and PEAR
Stephan Schmidt
 
The Big Documentation Extravaganza
Stephan Schmidt
 
Go OO! - Real-life Design Patterns in PHP 5
Stephan Schmidt
 
Component and Event-Driven Architectures in PHP
Stephan Schmidt
 
Session Server - Maintaing State between several Servers
Stephan Schmidt
 
XML Transformations With PHP
Stephan Schmidt
 
PEAR For The Masses
Stephan Schmidt
 
Inroduction to XSLT with PHP4
Stephan Schmidt
 

PHP im High End

  • 1. php im high-end ::: eine case-study zur 1&1 internet ag stephan schmidt 1&1 internet ag
  • 2. Was ist High-End? Die 1&1 Internet AG Anforderungen an das System Zahlen und Fakten Seitenstruktur und Architektur Konfiguration Performanceoptimierungen Bestellprozesse agenda::
  • 3. High-End: am oberen Ende von etwas. Hohe Anzahl an Usern, Page Views Hoher Umsatz Hoher Funktionalitätsumfang Hohe Frequenz von Änderungen … was ist high-end::
  • 4. PHP = Personal Homepage entwickelt für kleine Anwendungen Interpreter-Sprache (kein Compiler) in HTML eingebettet PHP im High-End, ein Widerspruch? Nein, PHP= PHP Hypertext Preprocessor php im high-end::
  • 5. Gegründet 1988 Teil der United Internet AG (GMX, AdLink) Großes Leistungsspektrum Hosting (größter Hoster weltweit) Access-Produkte UMS, 0700 über 3 Millionen Kunden / 4,5 Millionen Domains Agiert weltweit die 1&1 internet ag::
  • 6. Großes Netzwerk an Websites 1und1.de (Portal) Produkt-Seiten mit Bestellmöglichkeit DSL Hosting Internet-Zugänge start.1und1.de (Newsaggregator) Konfigurationsmenüs die websites::
  • 7. Websites und verwandte Dienste basieren auf den verschiedensten Technologien Java C/C++ PHP3/PHP4 MySQL Sybase heterogene umgebung::
  • 8. ca. 180 statische Seiten Online DSL Bestellung Warenkorb Lieferdaten Verfügbarkeits-Check Interaktiver Berater Einsteiger-Tour fallbeispiel > dsl.1und1.de::
  • 9. Performant Durch Producer pflegbar Kommunikation mit externen Diensten SOAP REST Stored Procedures Proprietäre Systeme Variantenfähig Design unabhängig von Logik anforderungen::
  • 10. Umfangreiche Logs zur Erfolgsmessung Keine redundanten Daten flexibel und schnell änderbar Zuordnung von Abschlüssen zu Werbeträgern Usability-gerecht trendy anforderungen 2::
  • 11. Dient der Erfolgsmessung von neuen Funktionen Ermöglicht Sonderaktionen mit Partner-Websites Alles an der Seite ist veränderbar Design Inhalte (HTML, Text, Artikel, Preise) Abläufe, wie Bestellprozess Schnittstellen (andere Bestellinformationen) varianten::
  • 12. Zusätzlicher URL Parameter Eindeutig pro Werbeträger (Banner, Redirect) Dient der Erfolgsmessung von Werbeträgern Beeinflusst die Website Graphische Änderungen Änderungen im Bestellprozess Kann Varianten auslösen sonderaktionscodes::
  • 13. Dient der Analyse von Nutzerverhalten und der Erfolgsmessung von Kampagnen/Aktionen Nicht nur simples Access-Log Pro Request bis zu 5 Logfiles Beliebige Informationen werden gelogged Visits, Page Views, Exit Bestellungen, Warenkorb, Interaktive Funktionen Zusammenhänge zwischen einzelnen Funktionen Interne Logs für Caching, Debugging logkonzept::
  • 14. ca. 2.000.000 Visitors/Monat ca. 7.500.000 echte Page Views/Monat ca. 3.000.000 vollständig dynamisch erzeugte Seiten ca. 4.000.000 zusätzliche Requests zu Logging-Zwecken ca. 150.000 übertragene MB/Monat an HTML Nur ein Server mit PHP 4.3.4 und Apache 1.x Dual-Processor 2 GB Speicher zahlen- und fakten::
  • 15. Aufteilen der Seite Linke Navigation Breadcrumb-Navigation Content-Bereich Teaser Fusszeile Warenkorb Meldungen seitenaufbau::
  • 16. Feste Inhalte Header Footer Seitenabhängige Inhalte Navigationen Content Session- /Userabhängige Inhalte Warenkorb Meldungen seiteninhalte::
  • 17. Vollständig objektorientiert Wiederverwertbarer Code Kapselt Funktionalität Erleichtert Arbeit in verteilten Teams Atomare Klassen Jede Klasse erledigt nur eine Arbeit 10 bis 10.000 Zeilen Code architektur::
  • 18. Front-Controller Übergabe eines Seitennamens per HTTP Setzt die angeforderte Seite aus verschiedenen Komponenten zusammen Aggregiert Hilfsklassen für Session Management Logging & Debugging Templating Datenbank-Zugriff (bei Bedarf) architektur::
  • 19. Plugin-Manager statische Methoden zur Integration von Plugins Erlaubt dynamisch Code hinzuzufügen, der bei jedem Seitenaufruf ausgeführt wird (z.B. Warenkorb) Event-Manager statische Methoden erlaubt dynamisch Code hinzuzufügen, der bei bestimmten Ereignissen ausgeführt wird (z.B. bei Bestellung) für alle Benutzer oder benutzerspezifisch architektur::
  • 20. In die einzelnen Bereiche können verschiedene Komponenten integriert werden: Einbinden statischen HTML-Codes Einbinden eines Templates (erlaubt einfache Logik) Einbinden von Extensions PHP-Objekte liefern dynamischen Content nach Interaktion mit dem User zurück Erhalten Zugriff auf den Controller und Hilfsobjekte komponenten::
  • 21. Aufbau einer Extension: Einfache PHP-Klasse abgeleitet von einer Basisklasse Muss nur eine public-Methode implementieren, die Content bereitstellt Übergabe von Seitenname und Request-Daten Rückgabe von Content als String oder Fehler-Objekt Controller fügt Rückgabewert im Rahmen ein Perfektes Sandboxing extensions::
  • 22. Konfiguration erfolgt über XML-Dateien: Einfach durch Producer pflegbar Können leicht validiert werden Einlesen durch patConfiguration Erlaubt Zuordnung Tag zu PHP-Datentyp Erlaubt xIncludes Bietet Caching der Dateien konfiguration::
  • 23. structure.xml Layout: Bereiche der Seite, Rahmentemplate Varianten Sonderaktionen Session/Request-Konfiguration pages/foo.xml Definieren der Inhalte einer Seite navigations/foo.xml Definieren einer Navigationsstruktur konfigurationsdateien::
  • 24. Sonstige Dateien Bestellschritte Bestellprozesse Schnittstellen zur Bestellung (Stored Procedure) Artikel-Daten Artikel-Strings Sonderaktionscodes konfigurationsdateien 2::
  • 25. <page name=&quot;index&quot;> <navigation>default</navigation> <contents> <item> <action>includeTemplate</action> <href>static/home.tmpl</href> </item> </contents> <teasers> <item> <action>loadExtension</action> <href>ucuoDSLCheck</href> </item> </teasers> </page> definieren einer seite::
  • 26. Konfiguration laden Rahmentemplate laden Seiteninhalte erzeugen Navigation erzeugen Aufruf der Plugins Schreiben der Logfiles Ausgabe life-cycle eines requests::
  • 27. Hautproblem: Einlesen der Templates und Generieren des Inhaltes. Einsetzen von Caching: Template-Cache durch patTemplate Vermeidet preg_* Funktionen Cachen von ganzen Seiten Cachen einzelner Komponenten Ausliefern von GZIP-Content Conditional GET performance::
  • 28. Statische Seiten aus Cache ausliefern Erzeugen eines Cache-Keys unter Berücksichtigung von Javascript/Browser Variante Actioncode Extensions können auch gecached werden Plugins können Daten nach dem Caching einfügen (unterschiedlich pro Session) caching::
  • 29. Verringern der zu übertragenden Datenmengen Zippen der Cache-Files 20% des HTML-Codes Nur wenn User Cookies hat (Session-ID) Conditional-GET Eindeutige ID der Seite (Cache-Key) an Browser schicken Client schickt ID zurück Server kann statt Daten 304/Not Modified schicken 3% aller Seiten, 5 GB pro Monat caching 2::
  • 30. Konfiguration laden Rahmentemplate laden Seiteninhalte erzeugen Navigation erzeugen Aufruf der Plugins Schreiben der Logfiles Ausgabe life-cycle eines requests mit caching:: kann durch file_get_contents() ersetzt werden kann durch unserialize() ersetzt werden kann durch header('HTTP 1.x 304/Not Modified') ersetzt werden
  • 31. Bestellprozess ist das Herzstück der Seite ucuoOrder Extension ist Controller im Controller Jeder Bestellschritt (=Formular) ist eine Extension Können beliebig kombiniert werden (XML-Dateien) Reihenfolge Abhängigkeiten (Überprüfe Bankdaten nach Änderung der Adressdaten) Bedingungen für einzelne Schritte (zeige Funkmodule nur an, wenn Router gewählt wurde) bestellprozesse::
  • 32. Vollständige Diskussion der Bestellprozesse würde den Rahmen der Präsentation sprengen mehrere 100kb PHP Code Variantenfähig Dedizierter Conversion-Manager konzipieren neuer Prozesse Auswerten der Bestell-Logs Erfolgsanalyse der Tests bestellprozesse 2::
  • 33. 1&1 setzt auf Open-Source: patTemplate patConfiguration PEAR DB SOAP XML_Serializer Mail HTTP_* open source::
  • 34. vielen dank für ihre aufmerksamkeit. [email_address] http://www.schst.net | http://www.php-tools.net