Allgemeines Prinzip

Der gesamte Inhalt einer mit SPIP verwalteten Site befindet sich in einer MySQL-Datenbank. Wenn man diese Informationen den Besuchern zukommen lassen will, muß man daher eine Operation durchführen, durch die die Informationen ausgelesen und so organisiert und dargestellt werden, daß eine HTML-Seite im Webbrowser angezeigt werden kann.

Auf traditionelle Weise durchgeführt, ist diese Operation ziemlich mühsam:

-  man muß sich mit PHP- und MySQL-Programmierung auskennen und relativ komplexe «Routinen» schreiben;

-  die Integration dieser Routinen in eine ausgearbeitete HTML-Seitendarstellung ist ziemlich aufwendig;

-  man muß Performance-Probleme berücksichtigen: der systematische Rückgriff auf MySQL- und PHP-Code verschlingt Ressourcen, verlangsamt den Besuch der Seite und bringt in extremen Fällen den Webserver zur Strecke.

SPIP bietet eine Gesamtlösung, um diese Schwierigkeiten zu umgehen:

-  Die Seitendarstellung der Site wird mittels HTML-Seiten namens Skellett bewerkstelligt, die vereinfachte Anweisungen enthalten, mit denen man anzeigen kann, wo und wie die der Datenbank entnommenen Informationen auf der Seite erscheinen sollen;

-  Ein Cache-System erlaubt es, jede Seite auf Vorrat zu lagern und so zu vermeiden, daß bei jedem Besuch eine Anfrage an die Datenbank ausgelöst wird. Das verringert nicht nur die Arbeitsbelastung des Servers und führt zu einer starken Beschleunigung, es bewirkt auch, daß eine Site unter SPIP selbst dann erreichbar bleibt, wenn die MySQL-Datenbank nicht funktioniert.

Ein Paar von Dateien für jeden Dokumententyp

Das interessante (und das einschränkende) bei einem automatisierten Publikationssystem ist, daß man nicht für jede isolierte Seite verschiedenartige HTML-Schnittstellen neu definiert. Beispielsweise profitieren alle Artikel von derselben Schnittstelle; das System ordnet einfach die verschiedenen Informationen in der graphischen Schablone an (im weiteren wird man sehen, daß SPIP dennoch eine gewisse Flexibilität erlaubt).

Der Vorteil dieser Vorgehensweise ist offensichtlich: man definiert einen Format-Typ (eine Schablone bzw. ein Skelett) für beispielsweise sämtliche Artikel, und das System stellt jede individuelle Seite her, indem es automatisch den Titel, den Text, die Links der Navigation usw. für jeden Artikel an die richtige Stelle setzt.

SPIP verlangt für jeden Dokumententyp zwei Dateien von Ihnen: eine .php3-Datei und eine .html-Datei. Bei der Installation von SPIP finden Sie beispielsweise die Paare «article.php3 / article.html», «rubrique.php3 / rubrique.html» und so weiter. Selbstverständlich können Sie die Paare modifizieren und weitere erzeugen.

Das Funktionsprinzip des Cache

Der Aufruf einer bestimmten Seite geschieht über die Vermittlung der .php3-Datei. Wenn man z.B. den Artikel Nummer 5 aufrufen will, ist die korrespondierende URL:

-  http://meinesite.net/article.php3?id_article=5

1. Die aufgerufene Datei ist also article.php3 mit dem Parameter id_article=5.

2. Die Datei article.php3 ist eine PHP-Datei; ihre erste Aufgabe besteht darin, das Verzeichnis /CACHE auf Ihrem Server daraufhin zu überprüfen, ob dort schon eine mit diesem Artikel korrespondierende Datei existiert.

2a. Wenn in /CACHE eine solche Datei existiert, prüft article.php3 deren Erzeugungsdatum. Wenn die Datei neu genug ist, wird sie direkt an den Benutzer weitergereicht. Damit ist der Prozeß der Anfragebearbeitung dann beendet.

3. Wenn in /CACHE eine solche Datei nicht existiert (beispielsweise beim ersten Aufruf dieses Artikels) oder wenn sie bereits zu alt ist, setzt SPIP die Berechnung dieser Seite in Gang.

4. Es ist die Seite article.html, die nun geladen und analysiert wird. Diese Seite enthält die Seitendarstellung, die mit dem jeweiligen Dokumententyp korrespondiert. Es handelt sich dabei um HTML, das durch Anweisungen ergänzt ist, welche die Platzierung der aus der Datenbank entnommenen Elemente erlauben. Nach Maßgabe der von article.html angeforderten Elemente sucht SPIP nun die benötigten Informationen aus der MySQL-Datenbank und fügt sie an den vorgesehenen Stellen ein.

5. Auf diese Weise stellt article.php3 auf der Basis der in article.html enthaltenen Beschreibung mit den aus der Datenbank entnommenen Elementen eine Datei her. Diese Datei wird dann in dem Verzeichnis /CACHE gespeichert und an den Besucher geschickt.

Wenn beim nächsten Besuch der Seite die Zeit zwischen den beiden Besuchen nicht zu lang war, wird dann diese in /CACHE gelagerte Datei zurückgegeben, ohne daß aus den Beständen der Datenbank eine neuerliche Seitenberechnung durchgeführt werden müßte. Sollte die Datenbank abgestürzt sein, wird gezwungenermaßen die Datei im Cache zurückgegeben; auch dann, wenn sie «zu alt» ist.

Anmerkung. Hier sieht man, daß jede Seite der Site individuell im Cache abgespeichert und daß jede Neuberechnung durch Besuche auf der Site hervorgerufen wird. Es gibt vor allem keine Neuberechnungen aller Seiten der Site auf einen Schlag zum regelmäßigen Fälligkeitstermin (diese Art von «Haupt- und Staatsaktion» hat sich den guten Ruf erworben, den Server zu überlasten und ihn manchmal abzuschießen).

Die .PHP3-Datei

Die «.php3»-Datei ist sehr einfach. Beispielsweise enthält article.php3 lediglich:

Ihr einziger Zweck ist also die Festlegung zweier Variablen ($fond und $delais) und der Aufruf der Datei, die die Funktionalitäten von SPIP auslöst (inc-public.php3).

Die Variable $fond ist der Name der Datei, die die Beschreibung der Seitendarstellung enthält (der Name des Skelettes). Wegen $fond="article" ist hier die Beschreibungs-Datei in article.html enthalten [1]. Beachten Sie unbedingt, daß man bei der Variablen $fond die Namenserweiterung «.html» nicht angibt.

Anmerkung. Das Interessante dabei, sich selbst einen Namen für die Skelett-Datei wählen zu können (der ansonsten automatisch vom Namen der .php3-Datei abgeleitet wird), ist die Möglichkeit, bei Bedarf einen anderen Namen zu verwenden. Dies deshalb, um nicht möglicherweise die HTML-Dateien zu löschen, die von einer früheren Version der Site übriggeblieben sind und die man nicht verschwinden lassen möchte. Wenn von einer früheren Version der Site eine Datei article.html existiert, die man nicht löschen möchte, kann man beispielsweise eine SPIP-Skelettdatei namens article-nouveau.html verwenden und in article.php3 festlegen: $fond="article-nouveau".

Die Variable $delais ist das maximale Alter, bis zu dem eine in /CACHE abgespeicherte Datei verwendet werden soll. Diese Zeitspanne wird in Sekunden gemessen. Ein Delay von 3600 entspricht also einer Stunde; ein Delay von 24*3600 entspricht demnach 24 Stunden.

Man kann mit diesem Wert herumspielen, in Abhängigkeit davon, wie oft neue Inhalte zur Site hinzugefügt werden (neue Artikel, neue Meldungen...). Eine Site, die mehrmals am Tag aktualisiert wird, könnte sich einen Delay von einer Stunde zulegen; eine Site, die mehrere Artikel pro Woche veröffentlicht, könnte einen deutlich längeren Delay haben. Außerdem ist der Inhalt der Seiten wichtig: wenn Sie die Syndikation des Inhalts von Seiten einfügen, die häufig weiterentwickelt werden, werden Sie zweifellos Ihren eigenen Delay an denjenigen der referenzierten Seiten angleichen wollen.

Anmerkung. Manche Webmaster erliegen der Versuchung, lächerliche Delayzeiten festzulegen (wenige Sekunden), damit die Site unter allen Umständen ganz genau den letzten Änderungen an der Datenbank entspricht. In diesem Falle verlieren Sie sämtliche Vorteile des Cache-Systems: die Besuche werden deutlich verlangsamt, und auf sehr stark frequentierten Seiten können Sie im Extremfall einen Zusammenbruch der Datenbank hervorrufen (oder Sie bekommen Schwierigkeiten mit Ihrem Server-Herbergsvater, weil Sie die Arbeitskraft seiner Maschine monopolisieren...).
Anmerkung. Ein anderer Grund, der Webmaster dazu zu drängen scheint, sehr kurze Delayzeiten festzulegen, ist das Vorhandensein von Foren auf ihrer Site. Sie halten es für notwendig, die Verzögerung der Neuberechnung zu reduzieren, damit die Beiträge angezeigt werden, sobald sie gepostet sind. Das ist überflüssig: SPIP kümmert sich automatisch um diesen Aspekt; wenn ein Beitrag zu einem Forum gepostet ist, wird die korrespondierende Seite aus dem Cache gelöscht und sofort neu berechnet, welcher Delay auch immer für diese Seite festgelegt sein mag.

Die .HTML-Datei

Bei SPIP bezeichnen wir die .html-Dateien als Skelette (frz.: squelettes). Sie sind es, die die graphische Schnittstelle Ihrer Seiten beschreiben.

Diese Dateien sind direkt in HTML verfaßt, in das man Anweisungen einfügt, mit denen man SPIP beibringen kann, wo es die aus der Datenbank entnommenen Elemente platzieren soll (von der Art «platziere den Titel hier», «zeige an dieser Stelle die Liste der Artikel an, die dasselbe Thema behandeln»...).

Die Anweisungen für die Anordnung der Elemente sind in einer speziellen Sprache verfaßt, die Gegenstand des vorliegenden Benutzermanuals ist. Diese Sprache stellt im Übrigen bei SPIP die einzige Schwierigkeit dar.

«Noch eine Sprache ?» Nun ja, Sie werden eine neue Sprache lernen müssen. Sie ist aber nicht sehr kompliziert, und sie erlaubt es, sehr schnell komplexe Schnittstellen zu erzeugen. Wenn Sie das Pärchen PHP/MySQL zum Vergleich heranziehen, werden Sie sehen, daß sie Ihnen eine Menge Zeit spart (vor allem: sie ist sehr viel einfacher). Sie ist eine Markup-Language, das heißt eine Sprache, die ähnliche Tags wie die Zellen von HTML verwendet.

Anmerkung. Auf dieselbe Weise wie man HTML lernt, indem man sich vom Quellcode der Sites inspirieren läßt, die man besucht, können Sie sich von den Skeletten inspirieren lassen, die auf anderen Sites benutzt werden, die unter SPIP laufen. Es reicht aus, die korrespondierende «.html»-Datei suchen zu gehen. Zum Beispiel können Sie sich das Artikel-Skelett von uZine anschauen (betrachten Sie den Quellcode, wenn Sie den Text des Skeletts sehen wollen).

Eine andere Schnittstelle innerhalb derselben Site

Nehmen Sie zunächst zur Kenntnis, daß es möglich ist, mehrere Dateien für dasselbe logische Element (Artikel, Rubriken, ...) zu erzeugen. Beispielsweise können Sie Dateien erzeugen, um ein und denselben Artikel mit zwei unterschiedlichen Schnittstellen besuchen zu können: article.php3/html für das normale Format, imprimer.php3/html für denselben Artikel in einem Format, das sich für den Ausdruck eignet, article-texte.php3/html für den Artikel in einem Textformat (z.B. für Sehbehinderte angepaßt), article-lourd.php/html als Hochlast-Schnittstelle für besonders leistungsfähige Verbindungen, und so weiter.

-  Eine andere Schnittstelle nach Maßgabe der Rubriken. Sie können für ein und denselben Dokumententyp verschiedenartige Skelette gemäß den Rubriken der Site erzeugen. Es handelt sich dabei darum, einfach neue .html-Dateien in Abhängigkeit von den Rubriken zu erzeugen (hier ist es überflüssig, die .php3-Datei zu modifizieren, man beschränkt sich darauf, an den Namen der Skelett-Dateien herumzuspielen).

Es genügt, den Namen der Skelett-Datei mit einem angehängten «-Nummer» zu ergänzen (ein Bindestrich gefolgt von einer Rubriknummer). Wenn Sie beispielsweise eine Datei namens article-60.html erzeugen, werden alle in der Rubrik Nummer 60 enthaltenen Artikel dieses Skelett verwenden (und nicht mehr das voreingestellte Skelett article.html). Merken Sie wohl: die angezeigte Nummer ist die Nummer einer Rubrik. Wenn diese Rubrik Nummer 60 noch Unterrubriken enthält, verwenden die in diesen Unterrubriken enthaltenen Artikel gleichfalls das neue Skelett article-60.html.

Anmerkung. In unserem Beispiel wird man sicherlich ebenfalls daran interessiert sein, eine Datei rubrique-60.html zu erzeugen, ja sogar eine Datei breve-60.html usw., um die Änderung der Seitendarstellung in dieser Rubrik zu begleiten.

-  Eine Schnittstelle für eine einzige Rubrik. (SPIP 1.3) Man kann eine Schnittstelle erzeugen, die auf eine Rubrik angewandt wird, aber nicht auf deren Unterrubriken. Dafür muß man eine Datei article=60.html erzeugen, die nur bei Artikeln direkt in der Rubrik Nummer 60 Anwendung findet, aber nicht bei solchen in deren Unterrubriken.

Was kann man in eine .HTML-Datei schreiben ?

Die ..html.-Dateien sind ihrem Wesen nach «Text»-Dateien, ergänzt um Anweisungen für die Platzierung der Elemente aus der Datenbank.

SPIP analysiert lediglich die Anweisungen für die Platzierung der Elemente aus der Datenbank (codiert in der speziellen SPIP-Sprache); alles was sonst noch in der Datei steht und nicht mit diesen Anweisungen zu tun hat, wird von SPIP in Ruhe gelassen.

Der wesentliche Inhalt der Skelette besteht also aus HTML. Sie selbst, werter Leser, bestimmen die Seitendarstellung, die gewünschte HTML-Version usw. Offensichtlich können Sie auch Stylesheets (CSS) in die Skelette aufnehmen, aber auch JavaScript, Flash — in groben Zügen: alles, was man normalerweise in eine Webseite setzen kann.

Sie können aber auch XML erzeugen (das alles ist nichts weiter als Text; beispielsweise erzeugt «backend.php3/html» XML).

Noch origineller: alle Seiten, die an den Besucher zurückgegeben werden, werden durch eine in PHP geschriebene Seite aus dem /CACHE geholt. Sie können also in Ihr Skelett PHP-Anweisungen schreiben; diese werden während des Besuchs ausgeführt. Wenn sie mit genügender Feinfühligkeit gehandhabt wird, verleiht diese Möglichkeit SPIP eine große Flexibilität, und Sie können es auf diese Weise vervollständigen (Sie können z.B. einen Zähler hinzufügen usw.); Sie können sogar bestimmte Elemente der Seitendarstellung in Abhängigkeit von den aus der Datenbank entnommenen Informationen selbst entwickeln.

Anmerkungen

[1Wenn article.html nicht existiert, wird stattdessen die Datei article-dist.html benutzt. Lesen Sie hierzu «Was sind nun wieder diese «...-dist»-Dateien?».

Autor wshSchlegel Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, Deutsch, English, Español, italiano