Logo phpadsnew.ganzkurz.de
30.07.2010

Technik - Engine

Die Ausliefer-Engine wird auf unterschiedliche Weise aufgerufen, aber ihre Aufgabe ist meistens die gleiche. Meistens ist die Ausgabe zum Browser abhängig von der Art und Weise wie PhpAdsNew aufgrufen wird. Nach dem Aufruf baut die Engine als erstes eine Verbindung zur Datenbank auf. Weil alle Daten in der Datenbank gespeichert sind ist das ein sehr wichtiger Schritt.

Nachdem die Verbindung hergestellt ist, versucht die Engine herauszufinden welcher Banner gezeigt werden soll. Weil Banner mit Zonen verknüpft sind und die ID der Zone während des Aufrufs zur Ausliefer-Engine übertragen wird, holt PhpAdsNew erst alle Informationen die über die aktuelle Zone zur Verfügung stehen. Diese Liste beinhaltet eine Liste aller Banner die zu dieser Zone gehören.

Der nächste Schritt ist ein bißchen kompliziert, weil das Ergebnis aus Optimierungsgründen zwischengespeichert wird. Abhängig von der Liste der Banner beinhalten die Zoneninformationen eine Liste mit Informationen über die verknüpften Banner. Ist diese Liste nicht vorhanden, oder abgelaufen, holt die Ausliefer-Engine alle passenden Banner speichert sie in einem Cache für den Fall das die Zone erneut aufgerufen wird. Der Grund warum diese Abfrage zwischengespeichert wird, ist einfach. Weil die Zoneninformatonen jedesmal gebraucht werden, ist es speichersparender eine Zwischenspeicher für die Banner einzubauen. Wenn der Cache nicht benutzt wird, muss die Engine eine umfangreiche Abfrage an die Datenbank machen. Weil die Abfrage jedesmal die gleiche ist, ist es viel besser sie nur einmal auszuführen und das Ergebnis zwischenzuspeichern.

Jetzt haben wir die verlinkten Banner, inklusive der Priorität jedes Banners. Als erstes wird jetzt festgelegt welcher Banner gezeigt wird. Dazu werden die Prioritäten der Banner zusammengezählt und eine Zufallszahl, mit der Summe als Maximum, gebildet. Das Banner mit dieser ID wird dann auf Auslieferbeschränkungen hin überprüft. Wenn der Banner zur Anzeige zugelassen ist wird er zum nächsten Schritt weitergereicht, andernfalls wird er von der Liste gelöscht, die Priorität wird von der Summe abgezogen und eine neue Zufallszahl gebildet.

Das passiert solange bis ein passender Banner gefunden wurde. Falls kein Banner passt stehen in den Zoneninformationen die Anweisungen wie weiter verfahren wird. Basierend auf diesen Infomationen wird die Ausliefer-Engine die Auslieferung stoppen oder eine andere Zone nehmen und zum zweiten Schritt zurückgehen.

Weil die Auslieferbeschänkungen von externen Faktoren abhängen die sich bei jedem Aufruf der Ausliefer-Egine ändern können, kann das Datenbankabfrage-Ergebnis nicht zwischengespeichert werden und muss jedesmal ausgeführt werden wenn ein Banner angefordert wird. PhpAdsNew speichert teilweise die Kalkulationsschritte ob ein Banner erlaubt ist oder nicht. Dank dieses Caches braucht die Ausliefer-Engine nicht jedesmal eine umfangreiche Abfrage an die Datenbank zu stellen um Informationen aus der Tabelle mit den Auslieferbeschränkungen zu holen. Jedesmal wenn die Auslieferbeschränkungen im Administrator-Interface geändert werden, wird der Zwischenspeicher auch aktualisiert.

Wenn ein Banner gefunden wurde muss der HTML-Code für die Auslieferung vorbereitet werden. Bei Grafikbannern ist der HTML für die Anzeige Teil der bereits abgefragten Informationen, weil dann der Code bei Auslieferung jedesmal der gleiche ist. Der Code wird schon bei der Erstellung oder Änderung des Banners erzeugt. Das entlastet die Ausliefer-Engine von der Generierung des Codes, jedesmal wenn ein Banner aufgerufen wird. Nur Informationen die bei Erzeugung des Banners noch nicht zur Verfügung standen, werden hier eingefügt. Beispielsweise: der aufrufende Domainname, die Zonen-ID welche zur Auslieferung benutzt wurde, usw.

Falls Beacon's nicht für die Protokollierung verwendet werden, weist die Ausliefer-Engine die Datenbank an einen AdView pro Banner zu protokollieren. Das ist nicht sehr zverlässig, weil es vorkommen kann das der Banner noch nicht vollständig geladen ist und es diverse Gründe gibt warum dieser Banner dann nicht angezeigt werden kann. Einen AdView zu protokollieren ist dann verfrüht. Besser ist es für die Protokollierung Beacon's einzuschalten, dann passieren solchen falschen Protokllierungen nicht. Weil hierbei ein Link auf ein kleines Bild an den HTML-Code angehängt wird, wird der AdView nur gezählt wenn dieses kleine Bild vom Server abgefragt wird. Da das Bild garantiert nach dem Banner angefordert wird, können sie sicher sein das auch der Banner angezeigt wurde.

Im letzten Schritt sendet die Ausliefer-Engine den HTML-Code zum Browser. Dieser Schritt unterscheidet sich von Auslieferart zu Auslieferart. Beispiel: Bei lokalem Modus wird das HTML "pur" zum Browser gesendet. Bei Javascript wird der Code in eine Variable gespeichert und dann an den Browser gesendet. Der Browser ist dann in der Lage die Javascriptvariable zu verwenden und selbst auf dem Bildschirm darzustellen.

 weiter mit Erste Hilfe - Installation


© 2003 - 2010 Reik Holznagel | letzte Änderung: 20.04.2007