Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Maasive Vergütungsausfälle durch fehlerhafte cron ?!?

  1. #11
    nunja.. es sollte auch beachtet werden, ob es überhaupt so vorteilhaft ist, feste TANs zu vergeben..Beim Homebanking benutzt du auch nicht 10mal die gleiche Tan für den gleichen Empfänger.

    Ich tendiere hingegen ehr dazu, auch die Tans beim Update der Kampagnen zu ändern und im cron eine weitere abfrage einzubauen. Ich stelle mir das ungefähr so vor:

    wo die Banner gesplittet werden einen Zähler einbauen zb. $count++

    vor dem updaten der Kampagne die alte tan auslesen

    Kampagne updaten mit neuer Tan

    tabelle _reloads updaten und alte Tan durch die neue ersetzen, damit die User im Reload bleiben

    und am Ende

    if($count >'1'){abgelaufene Banner löschen}


    somit bekommt die Kampagne jedesmal eine neue Tan , die User bleiben im Reload und die abgelaufenen Kampagnen werden nur gelöscht, wenn ein Returncode gekommen ist


    und ein vielleicht nicht ganz unerheblicher Aspekt: Die Chance sich sein VMS unbrauchbar zu machen ist wesentlich geringer, als bei der schon erwähnten Version und geht wesentlich schneller

  2. #12
    ..also nach reiflicher Überlegung habe ich mich von dem Gedanken, die Tan zu ändern wieder verabschiedet. Der Grund:

    Wenn gerade viele User Banner klicken und ich dann die Tans per cron ändere kommt es wohl zwangsläufig häufiger vor, das die User die Klicks nicht vergütet bekommen, weil ich genau in der Phase zwischen Klick und Vergütung die Tan geändert habe. Das macht keinen seriösen Eindruck. Also werde ich mich nur darauf beschränken, die Ausfälle zu verhindern

  3. #13
    Benutzer
    Registriert seit
    08.10.2006
    Beiträge
    50
    Könnte man die tan nicht aus dem Kürzel und der kid erstellen und dann z.b. mit md5 unkenntlich machen?

  4. #14
    sicher....
    man kann das bestimmt...man kann auch vms3 schreiben...nee jetzt mal im ernst, war ein scherz.

    also ich habe die von mir angesprochene Version jetzt mal über das WE getestet und festgestellt, das die super läuft und total simpel umzusetzen ist. Mir scheint dies die beste Lösung zu sein, da die meisten Webmaster ( auch die, die nicht so gut oder garnicht programmieren können) das selbst erledigen können, ohne sich ihr vms gänzlich zu zerschiessen.

    Es ist bei meiner Methode lediglich zwischen Einzelcrons (die, die nur eine Werbeform abholen) und Multicrons (die, die mehrere Werbearten abholen) zu unterscheiden.

    Hier mal anhand des Banna-crons ein Beispiel für ein Einzelcron: (Änderungen rot)

    @require_once ('../lib/functions.lib.php');
    db_connect();
    $file1 = "";
    $countbanner='0';

    $interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'banna'"));
    if ($interfacedaten['mindestverguetung'] > 0.00) {
    // Forcedbanner nullen
    db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='banna' and werbeart='forcedbanner' and status='1'");
    // Forcedbanner einlesen
    $fb=@fopen("http://www.banna.de/interface/ausgabe.php?userid=".$interfacedaten['betreiber']."&key=".$interfacedaten['pass']."&art=forcedklick&reload=24&left=1&payout=".$inte rfacedaten['mindestverguetung']."","r");
    if($fb){
    while($line=fgets($fb,1000)) {
    $file1.=$line;
    }
    fclose($fb);
    }
    $code = explode("|", $file1);
    $tl_count = (count($code)/6)-1;
    $bid_lesen = 0;
    // Forcedbannercodes splitten
    // 0id;1name;2reload;3mindestaufenthalt;4verguetung;5 Klicksübrig
    for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) {
    $int_tan = '';
    $int_ziel = "http://www.banna.de/abbau/forcedklick.php?id=".$code[$bid_lesen]."&uid=".$interfacedaten['betreiber']."&wid=".$interfacedaten['seite']."";
    $int_banner = "http://www.banna.de/abbau/forcedbanner.php?id=".$code[$bid_lesen]."&uid=".$interfacedaten['betreiber']."&wid=".$interfacedaten['seite']."";
    $int_menge = round($code[$bid_lesen+5]);
    $int_dauer = $code[$bid_lesen+3]+5;
    $int_kid = $code[$bid_lesen];
    $int_reload = $code[$bid_lesen+2]*3610;
    $int_verdienst = ($code[$bid_lesen+4]*$interfacedaten['umrechnung']) - (($code[$bid_lesen+4]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']);
    $int_preis = $code[$bid_lesen+4]*$interfacedaten['umrechnung'];
    $ext_verguetung = $code[$bid_lesen+4];
    $int_tan = create_code(32);
    $bid_lesen=$bid_lesen+6;
    $countbanner++;

    // Forcedbanner updaten oder eintragen
    $int_menge = round($int_menge/100*$interfacedaten['restklicks']);
    echo 'extver: '.$ext_verguetung.' mindestverg: '.$interfacedaten['mindestverguetung'].' int.menge: '.$int_menge.' int.reload: '.$int_reload.'<br>';
    if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1 and $int_reload >= 3600) {
    $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'banna' and kid = '".$int_kid."'");
    if (!mysql_num_rows($forcedbanner_check)) {
    db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,me nge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','". $int_banner."','".$int_preis."','".$int_verdienst. "','".$int_dauer."','".$int_menge."','".$int_reloa d."','banna','forcedbanner')");
    } else {
    db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$int_dauer."' WHERE sponsor = 'banna' and kid = '".$int_kid."' and status = '0'");
    }
    }
    }
    }

    // Abgelaufene Banner löschen

    if($countbanner > '2'){
    db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'banna' and status = '0'");
    }

    // Zeit setzen
    db_query ("UPDATE ".$db_prefix."_crons SET laufzeit = '".time()."' WHERE bezeichnung = 'Banna.de Forcedbanner'");
    db_close();

  5. #15
    Beispiel für ein Multicron (hier ist es etwas mehr, da sonst wenn man Pech hat trotzdem alle Kampagnen gelöscht werden)


    @require_once ('../lib/functions.lib.php');
    db_connect();
    $file1 = "";
    $countbanner='0';

    $interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'werbekrise'"));

    if ($interfacedaten['mindestverguetung'] > 0.00) {
    // Werbekrise Forcedbanner nullen
    db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='werbekrise' and werbeart='forcedbanner' and status='1'");
    // Forcedbanner einlesen
    $fb=@fopen("http://www.werbekrise.de/interface/output_forcedbanner.php?id=".$interfacedaten['betreiber']."&pw=".$interfacedaten['pass']."&reload=24&verguetung=".$interfacedaten['mindestverguetung']."&uebrig=1","r");
    if($fb){
    while($line=fgets($fb,1000)) {
    $file1.=$line;
    }
    fclose($fb);
    }
    $code = explode("|", $file1);
    $tl_count = (count($code)/5)-1;
    $bid_lesen = 0;
    // Forcedbannercodes splitten

    for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) {
    $int_tan = '';
    $int_ziel = "http://www.werbekrise.de/lose/forcedclickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite']."";
    $int_banner = "http://www.werbekrise.de/lose/forcedviewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite']."";
    $int_menge = round($code[$bid_lesen+3]);
    $int_kid = $code[$bid_lesen];
    $int_reload = $code[$bid_lesen+2]*3610;
    $int_verdienst = ($code[$bid_lesen+4]*$interfacedaten['umrechnung']) - (($code[$bid_lesen+4]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']);
    $int_preis = $code[$bid_lesen+4]*$interfacedaten['umrechnung'];
    $ext_verguetung = $code[$bid_lesen+4];
    $int_tan = create_code(32);
    $bid_lesen=$bid_lesen+5;
    $countbanner++;

    // Forcedbanner updaten oder eintragen
    $int_menge = round($int_menge/100*$interfacedaten['restklicks']);
    if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1) {
    $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'werbekrise' and kid = '".$int_kid."'");
    if (!mysql_num_rows($forcedbanner_check)) {
    db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,me nge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','". $int_banner."','".$int_preis."','".$int_verdienst. "','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','werbekrise ','forcedbanner')");
    } else {
    db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'werbekrise' and kid = '".$int_kid."' and status = '0'");
    }
    }
    }
    }

    if($countbanner > '2'){

    db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'werbekrise' and werbeart ='forcedbanner' and status = '0'");
    }



    $file1 = "";
    $counttext='0';

    $interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'werbekrise'"));

    if ($interfacedaten['tlmindestverguetung'] > 0.00) {
    // Werbekrise Forcedbanner nullen
    db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='werbekrise' and werbeart='textlink' and status='1'");
    // Forcedbanner einlesen
    $fb=@fopen("http://www.werbekrise.de/interface/output_forcedtextlink.php?id=".$interfacedaten['betreiber']."&pw=".$interfacedaten['pass']."&reload=24&verguetung=".$interfacedaten['tlmindestverguetung']."&uebrig=1","r");
    if($fb){
    while($line=fgets($fb,1000)) {
    $file1.=$line;
    }
    fclose($fb);
    }
    $code = explode("|", $file1);
    $tl_count = (count($code)/6)-1;
    $bid_lesen = 0;
    // Forcedbannercodes splitten

    for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) {
    $int_tan = '';
    $int_ziel = "http://www.werbekrise.de/lose/forcedclicktextlink.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite']."";
    $int_banner = $code[$bid_lesen+5];
    $int_menge = round($code[$bid_lesen+3]);
    $int_kid = $code[$bid_lesen];
    $int_reload = $code[$bid_lesen+2]*3610;
    $int_verdienst = ($code[$bid_lesen+4]*$interfacedaten['umrechnung']) - (($code[$bid_lesen+4]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']);
    $int_preis = $code[$bid_lesen+4]*$interfacedaten['umrechnung'];
    $ext_verguetung = $code[$bid_lesen+4];
    $int_tan = create_code(32);
    $bid_lesen=$bid_lesen+6;
    $counttext++;

    // Forcedbanner updaten oder eintragen
    $int_menge = round($int_menge/100*$interfacedaten['tlrestklicks']);
    if ($ext_verguetung >= $interfacedaten['tlmindestverguetung'] and $int_menge > 1) {
    $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'werbekrise' and kid = '".$int_kid."'");
    if (!mysql_num_rows($forcedbanner_check)) {
    db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,me nge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','". $int_banner."','".$int_preis."','".$int_verdienst. "','".$interfacedaten['tlaufendhalt']."','".$int_menge."','".$int_reload."','werbekrise ','textlink')");
    } else {
    db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['tlaufendhalt']."' WHERE sponsor = 'werbekrise' and kid = '".$int_kid."' and status = '0'");
    }
    }
    }
    }


    if($counttext > '2'){

    db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'werbekrise' and werbeart ='textlink' and status = '0'");
    }
    // Zeit setzen
    db_query ("UPDATE ".$db_prefix."_crons SET laufzeit = '".time()."' WHERE bezeichnung = 'Forcedbanner werbekrise'");

    db_close();

  6. #16
    Naja.. leider ist die Formatierung ein wenig durcheinander gekommen, aber ich hoffe man kann trotzdem nachvollziehen, wo was hin muss. Ich habe den counter auf 2 gesetzt, da es einige Sponsoren gibt, die vor dem Returncode einen Status schicken und ich keine Ahnung habe, ob der die while schleife durchläuft. Bin einfach auf Nummer Sicher gegangen. Aber wer hat schon Sponsoren, die nur 2 Kampagnen rausschicken, also sollte es kein Problem sein ;-)

  7. #17
    Benutzer
    Registriert seit
    03.09.2006
    Beiträge
    91
    hmm interessantes thema...hat jemand zeit mir gegen lose die ganzen crons upzudaten?

  8. #18
    Benutzer
    Registriert seit
    22.03.2007
    Beiträge
    44
    PHP-Code:
    if($counttext '2'){
    db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'werbekrise' and werbeart ='textlink' and status = '0'");

    würde ich durch das folgende ersetzen

    PHP-Code:
    if($counttext <= '2'){
    db_query ("update ".$db_prefix."_gebuchte_werbung set verdienst = verdienst/2, status='1' WHERE sponsor = 'werbekrise' and werbeart ='textlink' and status = '0'");

    Begründung: falls nur der cron nicht richtig aufgerufen wurde würden sonnst alle banner gelöscht (obwohl der anbieter eigentlich da ist)==> so wird nach dem ersten cron-aurfruf der "schaden" halbiert, beim 2ten cronaufruf derschaden geviertelt

    Hab ich was übersehen?

  9. #19
    Du hast da ganz kräftig was übersehen. Bei deinem Vorschlag <=2 passiert nur folgendes: wenn der cron nicht funktioniert hat, aktivierst du die Kampagnen wieder ( auch die, die eigentlich gelöscht werden sollen, weil sie abgelaufen sind) zum halben Preis und bekommst die Klicks deiner User nicht vergütet, weil z.B. der Sponsor down ist

    Wenn der Sponsor also down ist, lässt du die Banner zum halben Preis weiterlaufen und wenn der cron durchläuft (dann ist der zähler ja >2) passiert am Ende nach dem Update nichts mehr (alte Kampagnen bleiben in der DB) Wenn du das so machst, hast du nach 3 Wochen 3000 aktive Kampagnen in der DB, wovon 2300 beim Sponsor nicht mehr vergütet werden, weil si längst abgelaufen sind.

  10. #20
    Nur was nu Heute ist werbekriese down. Ich hab es genauso gemacht wie beschrieben das mit dem Counter. Der Cron hat alle Kampangen trotzdem gelöscht.

    Wäre es nicht besser die Kampange zu Nullen ich meine die MENGE. Und wenn der Sponsor wieder da ist kann er es wieder updaten.

    Das einzigste was jetzt passieren kann das die dboptimize die Kampange mit 0 menge löscht da es denkt der ist abgelaufen.

    Aber Kampangen mit 0 menge könnte man einmal peer Hand löschen die Woche was kein beinbruch wäre und zuviel für die db wirds auch nicht, da die Tan mit der id bleibt in der db. Wenn ich es richtig verstanden hab Updatet der Cron die Dateien und was nicht da ist schreibt er Neu.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. fehlerhafte kodierung der inhalte USA Slots
    Von Gabriel im Forum Support zu Addons & Erweiterungen
    Antworten: 3
    Letzter Beitrag: 07.11.2011, 15:34
  2. Topnavigation fehlerhafte Farbe
    Von FloMK im Forum [HD] Grafik, Server & Sonstiges
    Antworten: 2
    Letzter Beitrag: 26.12.2009, 10:53
  3. Multi-Cron öffnet nur den ersten Cron.
    Von blacky123 im Forum [HD] Programmieren
    Antworten: 12
    Letzter Beitrag: 23.11.2009, 18:58
  4. Antworten: 0
    Letzter Beitrag: 07.10.2008, 14:40
  5. Ich starte mal durch !!!!!!!!!
    Von halk im Forum VMS Webseiten
    Antworten: 0
    Letzter Beitrag: 24.02.2007, 23:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •