A/B-Switch
- Kategorie: AfPark
- Erstellt: Mittwoch, 07. März 2012 11:24
- Zuletzt aktualisiert: Mittwoch, 07. März 2012 14:06
- Geschrieben von Martina Major
Bestimmung der aktiven bzw. inaktiven Tabellen
Im Frontend wird nur mit den aktiven Tabellen gearbeitet. Im CRON und im Backend erfolgt das Einlesen der Datwn jeweils in die inaktiven Tabellen. Nach erfolgreichem Abschluss der zugehörigen Funktionen, wird die Tabelle neue Tabelle zur aktiven und die bisherige Tabelle inaktiv.
Inaktive Tabellen werden nach erfolgreicher Umschaltung sofort gelöscht.
Über den Parameter GLOBAL_PARAM_KEEP_INACTIV_TABLE = 1, kann das sofortige Löschen vorübergehend ausgesetzt werden. Dies eröht allerdings den Speicherbedarf für die Datenbank auf nahezu das Doppelte.
Für die Bestimmung der jeweils aktiven bzw. inaktiven Tabellen (Shop, Domain, Menu usw.) wird die Funktion
db_get_activ_table($id, $type, $status='1') Datei: includes/functions/switch_functions.php
verwendet.
Diese Funktion gibt den Suffix _a bzw. _b für die aktive Tabelle zurück, bzw. der inaktiven wenn $status = 0 übergeben wird.
In den Funktionen im CRON und im Backend wird diese Funktion nicht direkt aufgerufen, sondern es werden für eine bessere Lesbarkeit der Programme die Funktionen
db_get_activ_[type]_table($id)
und
db_get_inactiv_[type]_table($id)
verwendet.
Aktivierung der neuen Tabellen
Die Aktivierung erfolgt mit der Funktion:
db_switch_table($id, $type='shop') Datei: includes/functions/switch_functions.php
Um bei Bedarf zusätzliche Funktionen bzw. Prüfungen durchzuführen erfolgt der Aufruf der Funktion nicht direkt, sondern über die erweiterten Funktionen:
switch_[type]($id) Datei: includes/functions/cron_functions_switch_[type].php
Typen
Derzeit werden für folgende Daten-Typen Tabellen mit Switch verwendet:
Type | Verwendung | ab Version | Link |
---|---|---|---|
shop | Produktdaten der Shops (Produktlisten von Affilinet), jeweils eine eigene Tabelle pro Shop. Diese Tabelle enthält alle übergebenen Daten | 3.x. | |
dom | Auszug (id, shop_id) aus allen der Domain zugeordneten Shops, gefiltert über die Shopfilter | 3.x | |
menu | Auszug (id, shop_id, menu_item_id) aus allen der Domain zugeordneten Shops, gefiltert über die Menüzuordnung | 3.x | |
prd |
die bisherige Domaintabelle - wenn benötigt |
||
pub | die bisher verwendete Publishertabelle - wird vermutlich nicht mehr benötigt. Die Zuordnung des korrekten Deep_Links erfolgt in einer Funktion. |