Ignore:
Timestamp:
09/07/10 21:10:11 (21 months ago)
Author:
vain
Message:
  • added some lines to the dev manual
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/manuals/developer/manual/de/kapitel05-framework.asc

    r4577 r4616  
    11471147==== Clansuite_Cache 
    11481148 
    1149 Die Klasse Clansuite_Cache ermöglicht den Zugriff auf die verschiedenen Cache-Adapter. 
     1149Die Klasse Clansuite_Cache ermöglicht die Zwischenspeicherung von Daten im Rahmen eines Applikations-Caches. 
     1150Eine Zwischenspeicherung bietet sich bei Daten an, die in ihrer Herstellung rechenintensiv sind oder sehr 
     1151häufig verwendet werden. Durch das Vorhalten im System sind sie bei Bedarf schnell erneut abrufbar. Dazu kann 
     1152auf verschiedene Cache-Adapter zurückgegriffen werden. Die unterschiedlichen Cache-Adapter dienen einerseits 
     1153dazu unterschiedliche PHP-Extensions zu unterstützen, andererseits aber auch dazu die Art und den Ort des 
     1154Zwischenspeichers genauer zu bestimmem. Als Ablageorte kommen der Hautpspeicher und Festplatte in Betracht. 
     1155 
     1156.Überblick PHP Caching-Extensions 
     1157Für PHP lassen sich inzwischen verschiedene Caching-Extensions finden. 
     1158Anzuführend sind beispielsweise die Standardbibliotheken Alternative PHP Cache (APC) und WinCache, 
     1159sowie eAccelerator, XCache, ionCube Loader (früher PHP Accelerator) und Zend Optimizer. 
     1160Gemeinsam ist diesen Erweiterungen, dass sie in C implementiert sind und direkt an der ZendEngine ansetzen, 
     1161um eine Leistungssteigerung zu bewirken. Die Leistungssteigerung bewirkt regelrechte Performcesprünge. 
     1162Dabei sind Performcesprünge von 200% bis 500% durchaus mess- und beobachtbar. 
     1163 
     1164Zudem bewirkt der Einsatz dieser Caches, dass sich die Load des Webservers deutlich spürbar mindert. 
     1165Der leistungssteigernde Caching-Effekt lässt sich durch einfaches Aktivieren der Erweiterung herbeiführen. 
     1166In wenigen Fällen sind umfangreiche Konfigurationsmaßnahmen nötig, zumeist bewirkt schon der Betrieb mit 
     1167Standardeinstellungen einen deutlichen Performaceboost. 
     1168In der Regel ergibt sich kein Grund dafür, auf eine solche Erweiterung zu verzichten. 
     1169Dennoch ist bei vielen Webhoster dieses Feature deaktivert und erst auf Nachfrage verfügbar. 
     1170 
     1171Das Gegenteil zu Caches, die als PHP-Extension eingebunden werden, sind die sogenannten Userland-Caches. 
     1172Dabei handelt es sich um Caching-Verfahren die vom Nutzer selbst erstellt wurden und daher in PHP implementiert sind. 
     1173Es lassen sich beispielsweise generierte Grafiken oder Rückgabewerte von Funktionsaufrufen zwischenspeichern. 
     1174 
     1175Sowohl ZendGuard, als auch ionCube Loader bieten neben der Caching-Funktionalität auch die Möglichkeit, den 
     1176Sourcecode in einer geschützen, verschlüsselten Form abzulegen. 
     1177Bei einem quellcode-offenen Produkt wie Clansuite, steht der Einsatz dieser Techniken aber außer Frage. 
     1178 
     1179.Überblick Caching-Mechanismen 
     1180Grundsätzlich lassen sich mehrere Anknüpfungspunkte für Caching-Systeme in PHP finden. 
     1181Zu den bekannteren Verfahren gehört das Opcode Caching. 
    11501182 
    11511183.Was macht ein OpCode-Cache? 
    1152 Normalerweise wird bei jedem Aufruf eines Skriptes zuerst das Skript kompiliert (es wird aus der Skriptsprache 
    1153 in Maschinencode überführt) und dann ausgeführt. Das kostet Zeit und verbraucht wertvolle Rechenleistung. 
     1184Normalerweise wird bei jedem Aufruf eines PHP-Skriptes zuerst das Skript kompiliert (d.h. es wird aus der 
     1185Skriptsprache in Maschinencode überführt) und dann ausgeführt. Das kostet Zeit und verbraucht wertvolle 
     1186Rechenleistung. Dieses Verhalten ist eine Eigenart der in PHP geschriebenen Webanwendungen. 
     1187Webanwendungen auf Basis anderer Architekturen, beispielsweise Java implementierte, halten die Anwendung 
     1188und auch komplexe Objektmodelle und Daten persistent verfügbar (siehe Java-EE-Server; Enterprise JavaBeans). 
     1189 
    11541190Verwendet man hingegen einen OpCode Cache, so wird ein Skript zuerst kompiliert und danach kompiliert im 
    1155 Speicher (shared memory / RAM) gehalten. Jeder weitere Aufruf des Skripts wird danach aus dem Speicher 
    1156 bedient und spart Kompilierungszeit. 
     1191Speicher (shared memory / RAM) gehalten. Dieser "PHP Zwischencode" wird zumeist heftig optimiert abgelegt. 
     1192Jeder weitere Aufruf des Skripts wird danach aus dem Speicher bedient und spart Kompilierungszeit. Man kann 
     1193Programmquellcode, aber auch die zur Laufzeit des Programms anfallenden Dateninhalte, zumeist Variablen, im 
     1194Cache ablegen.Wenn Variablen vom Nutzer im Cache abgelegt werden, spricht man vom User-Cache. 
     1195 
     1196Daneben gibt es weitere Caching-Mechanismen, beispielsweise das File Caching. 
     1197Beim File Caching werden eine oder mehrere Dateien zusammengefasst und für einen schnelleren späteren Zugriff abgelegt. 
     1198Des Weiteren gibt es das sogenannte "Resolve File Path Caching", hierbei kommt ein Mapping Verfahren zum Einsatz, bei dem 
     1199für den relativen Dateipfade der jeweilige absolute Dateipfad abgelegt wird, so dass später eine erneute Pfadauflösung 
     1200entfallen kann. Ein sogenannte "Session Handling Cache" legt die Sessiondaten, genau wie der User Cache, im Shared Memory ab. 
    11571201 
    11581202Der optimale Wert für die Größe des Cache-Speichers hängt natürlich vom tatsächlich verfügbaren RAM ab. 
    1159 Wer zu hohe Cachewerte einstellt, zwingt den Server möglicherweise dazu, andere Sachen auszulagern. 
     1203Wer zu hohe Cachewerte einstellt, zwingt den Server möglicherweise dazu, andere Sachen aus dem Speicher auszulagern. 
     1204 
     1205Bevor in letzter Instanz auf die Leistungssteigerung durch einen vorkompilierenden Cache zurückgegriffen wird, 
     1206sei allen Entwicklern geraten, zunächst die eigene Applikation und Datenbank auf den Prüfstand zu bringen, 
     1207um Leistungsbremsen zu erkennen und zu beheben. 
    11601208 
    11611209.Instanzierung 
     
    11641212 
    11651213.Entwurfsmuster 
     1214Als Entwurfsmuster kommt eine Fabrik zum Einsatz. 
     1215Die Fabrik liefert lediglich den Cache-Adapter aus, den der Nutzer in der Konfiguration festgelegt hat. 
    11661216 
    11671217===== Die Cache-Adapter 
    11681218 
     1219Die Cache-Adapter sind dabei einfache Wrapper, die lediglich den Zugriff auf die Methoden der Caching- 
     1220Extensions abstrahieren und standadisieren. Die Unterstützung für ein neues Caching-System ist durch 
     1221einfaches Hinzufügen eines entsprechenden Adapters problemlos möglich. 
     1222 
    11691223====== Cache: APC 
     1224 
     1225Der Alternative PHP Cache (APC) ist ein Opcode Cache. Er cached und optimiert den PHP Quellcode und stellt ihn als 
     1226"Zwischencode" bereit. 
     1227 
     1228http://php.net/apc 
     1229http://pecl.php.net/package/APC 
    11701230 
    11711231====== Cache: eAccelerator 
Note: See TracChangeset for help on using the changeset viewer.