hab da was gefunden:

Beschreibung für den Umbau des Reloadsystems
--=--=--=--=--=--=--=--=--=--=--=--=--=--=--
Die nachfolgende Beschreibung erklärt euch den Ablauf, wie ihr den Vergütungsausfall fast auf 0% drücken könnt, wenn ein Sponsornetzwerk mal nicht da ist und die Kampagnen gelöscht werden und dann wieder auftauchen.

Die dazu notwendigen Umbauarbeiten der Dateien finden in ALLEN Sponsorencrons statt an den Tabellen in welche ihr die Tan sonst einträgt und auch alle Dateien die aus der Relaodtabelle, ganz gleich aus welcher Reloadtabelle, auslesen.

Kommen wir nun zur Datenbankstrukturänderung:
Hinweis: Bevor ihr diese Änderungen macht, würde ich aus Sicherheitsgründen ein Backup empfehlen. Man kann ja nie wissen.

1. setzt ihr die Spalte KID in der `vms_gebuchte_werbung` o.ä. die kampagnen aus sponsorencrons beziehen auf Varchar(20)

2. Alle die Tabellen, die sich die KID aus der `vms_gebuchte_werbung`
genauso alle anderen Tabellen die von dieser Tabelle die KID beziehen setzt ihr bitte die KID auf Varchar(20)
3. In der vms_reloads o.ä. fügt ihr eine Spalte mit dem namen KID und des Typs Varchar(20) hinzu.

Nun dürfte die Datenbankstrukturänderung beendet worden sein.


Es geht nun zu den SponsorenCrons.
Hinweis: Ich habe mir einen Cron geschrieben, der mir jeden Sponsor einzeln Updatet auf die neue KID, da sich die Kampagnen dann doppelt reinschreiben würden, da die KID ja dann anders ist. Zu der näheren Erläuterung komme ich später.

Vorher noch einen Standart den ihr beachten solltet. Da die KID mit 11 Stellen auf Zahlenbasis deklariert worden ist. und diese jetzt 20 Zeichen hat mußte ich einen kleinen Standart einfallen lassen. Dieser wäre wie folgt: 5 Zeichen für den Sponsor und die letzten 2 Zeichen für die Werbeart. Somit hätte ich theoretisch 13 Zeichen für die eigentliche Kampagnenid des Sponsors. Dieses würde bedeuten das der Sponsor eine Maximale KID von 9.999.999.999.999 haben kann. Und das pro Werbeart!
Nun zum Beispiel einer neuen KID. Als Beispiel nehmen wir Lose4Admin, Webmasterlose, HP-Lose, Fuco-Ads und Nickeysponsor.

Sponsorenkürzel:
Webmasterlose = wml
Hp-Lose = hp-lo
Lose4Admin = l4adm
Fuco-Ads = fu-ad
Nickeysponsor = nispo

Die Werbearten sind wie folgt unterteilt:
ForcedBanner = fb
HighForcedBanner = hf
Premiumbanner = pb
Klick4Win = kw
Paidlinks = pl
Text Paidmail = pm
HTML Paidmail = hm
Traffic = tr
Surfviews = sw


Als Beispiel gehen wir dann von folgenden Szenario aus: WML bucht KID 13 von Forcedbanner ein und HP die KID 13 bei den Paidlinks und FuCo-Ads die KID 13 ebenfalls bei den Forcedbannern.
Wir haben dann folgende Konstelationen:
wml13fb
hp-lo13pl
fu-ad13fb

da die KID beim Sponsor, egal ob er nicht erreichbar ist oder nicht sich theoretisch nicht ändert haben wir somit einen Schlüssel, der eindeutiger ist als die TAN die nur temporär erstellt wird.


Nun zu den Eigentlichen Umbauarbeiten:
Ihr öffnet die Crondatei und sucht folgendes (meistens die $int_kid)
direkt unter der $int_kid schreibt ihr folgendes:
$int_kid = "SPONSORKÜRZEL".$int_kid."WERBEARTKÜRZEL";

Achtet nun daruaf das bei den eintragungen in der Datenbank überall wo die $int_kid steht es wie folgt steht: '".$int_kid."', da er diese dann sonst nicht eintragen würde.

Dann speichert ihr den Cron. Vorher müßt ihr für diesen SPonsor, den ihr gerade bearbeitet habt einen Cron schreiben, der wie folgt funkrionieren sollte:


--> AUSZUG ANFANG
//Variablen Deklarieren
$sponsor = "SPONSORNAME";
$kurz = "SPONSORKÜRZEL";

//Durchlauf für Forcedbanner
$sponsor = db_query("SELECT `kid` FROM `".$db_prefix."_gebuchte_werbung` WHERE `sponsor` = '".$sponsor."' AND `werbeart` = 'forcedbanner'"):
while($sp = mysql_fetch_array($sponsor)){
$kid_neu = $kurz.$sp['kid']."fb";
//In die Datenbank eintragen
db_query("UPDATE `".$db_prefix."_gebuchte_werbung` WHERE `kid` = '".$kid_neu."' AND `sponsor` = '".$sponsor."' AND `werbeart` = 'forcedbanner'");
}

//Durchlauf für Forcedbanner
$sponsor = db_query("SELECT `kid` FROM `".$db_prefix."_gebuchte_werbung` WHERE `sponsor` = '".$sponsor."' AND `werbeart` = 'paidlinks'"):
while($sp = mysql_fetch_array($sponsor)){
$kid_neu = $kurz.$sp['kid']."fb";
//In die Datenbank eintragen
db_query("UPDATE `".$db_prefix."_gebuchte_werbung` WHERE `kid` = '".$kid_neu."' AND `sponsor` = '".$sponsor."' AND `werbeart` = 'paidlinks'");
}

//Durchlauf für Paidmails
$sponsor = db_query("SELECT `kid` FROM `".$db_prefix."_gebuchte_werbung` WHERE `sponsor` = '".$sponsor."' AND `werbeart` = 'paidmails'"):
while($sp = mysql_fetch_array($sponsor)){
$kid_neu = $kurz.$sp['kid']."fb";
//In die Datenbank eintragen
db_query("UPDATE `".$db_prefix."_gebuchte_werbung` WHERE `kid` = '".$kid_neu."' AND `sponsor` = '".$sponsor."' AND `werbeart` = 'paidmails'");
}

AUSZUG ENDE -->

Somit verhindert ihr, wenn ihr Sponsor für Sponsor durchgeht, das ihr Kampagnen doppelt einbucht, da diese dann in dem Sponsorencron mit der neuen KID eingebucht werden. Somit könnt ihr das System auch Stück für Stück umbauen, ohne das der User oder ihr Verlust macht, da ihr die Crons nicht deaktivieren müsst. Wenn ihr den UpdateCron dann durchgelaufen habt, guckt bitte in der Tabelle `vms_gebuchte_werbung` nach, ob die KID auch so umgetragen worden ist. Beachtet bitte auch, das der Cron und der UpdateCron so nachfolgend wie nur möglich hochgeladen wird und der UpdateCron auch so schnell wie Möglich dann ausgeführt wird.


Nachdem ihr also schon die Datenbank und die Crons alle geändert habt, müßt ihr nun folgendes machen. Überall dort wo Dateien die `vms_reload` o.ä. mit Daten befüllen müßt ihr folgendes suchen:
INSERT INTO ".$db_prefix."_reloads (ip,uid,tan,bis...
Am besten hinter der Spalte `uid` fügt ihr dann ,kid ein und bei den Spalten dort wo $VARIABLENNAME['tan'] steht dann $VARIABLENNAME['kid'] ein. Somit werden dann die `vms_reloads` o.ä. Tabellen mit den neuen Daten bestückt. Die Dateien in der die `vms_reloads` auftaucht sind:
topframe_forced,topframe_hf,topframe_text,betteln, startseitenaufruf und unter umständen pcheck, topframe_premium und topframe_betau.

Nachdem ihr also eurer ganzes Projekt schon vorbereitet habt, könnt ihr, jenachdem wie ihr das betteln eingestellt habt und/oder den Startseitenaufruf dann folgendes machen.

Überall dort wo dann steht: (erst nur betteln und startseitenaufruf
SELECT ... FROM `vms_reloads` WHERE tan='".$VARIABLENNAME[TAN]."' macht ihr dann daraus:
SELECT ... FROM `vms_reloads` WHERE kid='".$VARIABLENNAME[KID]."'
Auch die nachfolgenden Variablen müßt ihr beachten, da eventuell dann noch tan steht.

Wenn ihr das betteln und den Startseitenaufruf schon umgestellt habt, könnt ihr die betteln und den startseitenaufruf aufrufern, wo in die `vms_reloads` geschrieben wird und die INSERT INTO anweisung so kürzen, das er die TAN nicht mehr mit einträgt.

Nun könnt ihr euch an euer WMS oder auch an den Adminbuchungen ranwagen. Dort müßt ihr dann beim eintragen in die `vms_gebuchte_werbung` o.ä. dann beachten das er eine KampagnenID ebenfalls mit einträgt. Am besten per Zufall mit 6 stellen berechnen lassen und vorher dann admin und hinten die werbeart mit angeben. Somit bucht ihr auch Standartkonforme Kampagnen ein und ihr vergewisdsert euch, dass ihr auch adminbuchungen dann im reload habt.

Nachdem die alle Zeilen mit der KID gefüllt sind (nachzuprüfen mit dem Befehl: SELECT COUNT(*) FROM `vms_reloads` WHERE `kid`="" in der Datenbank selber) könnt ihr also die Klick4, Paidlinks, Mailhistory halt alle Verdienen bereiche auch darauf umbauen so wie beim betteln.

Im Enddeefekt habt ihr dadurch 2 Vorteile gewonnen. Zum einen ist die neue KID die dann in der `vms_reloads` o.ä. Tabellen drinsteht eindeutiger als die TAN und auch kürzer, somit wird auch der speicherumfang geringer und die Abfrage aus dieser geht ein tick schneller. Und wenn euer Sponsor abbraucht, braucht ihr euch keine Gedanken machen, das ihr wieder kampagnen einbucht, die noch im reload bei euch sind.

Ich hoffe die Erklärung war so ok, da es ja zig arten vn addons gibt, die die vms_gebuchte_webrung und die vms_reloads nachbilden habe ich versucht diese so allgemein wie möglich zu gestalten.

Liebe Grüße,
Stigma_Bln