PDA

Vollständige Version anzeigen : jede stunde einem aktiven user 10.000 lose zahlen.


Seiten : 1 [2]

Tschaet
14.01.2008, 21:25
Hoi..

Ich habe ein kleines Problem mit dem Aktivbonus.

Irgendwann im laufe des Tages wird nichts mehr gebucht,es hat sozusagen "Aussetzer".

Cron lief allerdings,Server hatte zu diesen Zeitpunkten auch keinerlei Probleme.

Hat jemand einen Rat woran das liegen könnte?

Das Problem habe ich beim kostenpflichtigen,wie auch beim kostenlosen Addon.

Gruss
Tschaet

Tschaet
16.01.2008, 21:57
Achtung Doppelpost. *gg*

Ich denke das Problem liegt bei den diversen Cronjobanbieter.

Bei Cronjob.de fällt der Aufruf regelmässig am frühen Abend aus...
Ein anderer Anbieter führte ihn gleich mehrmals doppelt aus,auch sehr nett. *g*

Kennt irgendwer noch Anbieter die vielleicht zuverlässiger sind?

Gruss
Tschaet

darkness_design
20.01.2008, 03:41
Achtung Doppelpost. *gg*

Ich denke das Problem liegt bei den diversen Cronjobanbieter.

Bei Cronjob.de fällt der Aufruf regelmässig am frühen Abend aus...
Ein anderer Anbieter führte ihn gleich mehrmals doppelt aus,auch sehr nett. *g*

Kennt irgendwer noch Anbieter die vielleicht zuverlässiger sind?

Gruss
Tschaet

Hi,

ja das ist ein allseits bekanntes Problem. Verlassen kann man sich darauf net.
Dann wäre es besser man sucht sich einen Hoster der auch gleichzeitig cronjobs mit anbietet.
Da kann man zu 99% sicher sein das diese ausgeführt werden.

Cronjobs werden bei guten Hostern kostenlos mit angeboten. Da kannst Du dann selber bestimmen wann und wie oft dieser laufen soll.

Aber lasst die Finger von webhosterag

Grüße darkness

starke
23.01.2008, 16:52
danke, klasse Teil ^^

FLash
04.03.2008, 03:50
ich hol mal diesen alten Thread wieder hervor :idea:

ich hab den code ein bishen erweitert :smilewinkgrin:

und zwar so das eine datenbank abfrage stattfindet wenn der user entweder keine globale variable hat oder die reloadzeit abläuft :smilewinkgrin:
hab das auch bei mir im rechten menü.. musste die meldung wegen der größe abändern .. und hab sie rot gemacht :rolleyes:


<?
menuehead("Aktivbonus");
if (!isset($_SESSION['aktivb'])) {
$query = db_query("SELECT * FROM ".$db_prefix."_aktivbonus ORDER by last_active DESC LIMIT 1");
while ($row = mysql_fetch_array($query)) {
$userdaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_userdaten WHERE uid=".$row["uid"].""));
$_SESSION['savedaktiv']["nickname"] = $userdaten["nickname"];
$_SESSION['savedaktiv']["last_active"] = $row["last_active"];
}
$_SESSION['aktivb'] = time();
}

if ($_SESSION['aktivb']+360 <= time() ) { // hier die reloadzeit einstellen
$query = db_query("SELECT * FROM ".$db_prefix."_aktivbonus ORDER by last_active DESC LIMIT 1");
while ($row = mysql_fetch_array($query)) {
$userdaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_userdaten WHERE uid=".$row["uid"].""));
$_SESSION['savedaktiv']["nickname"] = $userdaten["nickname"];
$_SESSION['savedaktiv']["last_active"] = $row["last_active"];
}
$_SESSION['aktivb'] = time();
}

?>
<strong><font size="-3" color="#FF0000">Gewinner:&nbsp;<? echo $_SESSION['savedaktiv']["nickname"] ?>&nbsp;&nbsp;<? echo date("H:i:s",$_SESSION['savedaktiv']["last_active"]);?></font></strong>
<?

menuefoot();
?>


die zahl neben auskommentierten gibt die reloadzeit an :ciappa:

Nachtrag: hab den cron auch bishen geändert.. übernehme dafür keine gewährleistung.. ich weiss nicht was passiert wenn kein user online war..

<?
$date = time() - 3600;
$query = db_query(sprintf("SELECT uid FROM vms_kontodaten where last_active > '".$date."' ORDER BY rand() limit 1"));
while ($row = mysql_fetch_array($query)) {

$buchungs_id = create_code(14);
bonusbuchung ('+',10000,$row['uid']);
buchungsliste ($buchungs_id,10000,'1h Aktivbonus',$row['uid']);
db_query (sprintf("DELETE FROM ".$db_prefix."_aktivbonus WHERE last_active < %s"
, (time()-3600)
));
db_query(sprintf("insert into ".$db_prefix."_aktivbonus (uid,last_active) values ('%s','%s')"
, addslashes($row['uid'])
, (time()-120)
));

}

// Zeit setzen
db_query (sprintf("UPDATE vms_crons SET laufzeit = %s WHERE bezeichnung = 'Aktiv'"
, time()
));

?>

DJschatz27
21.04.2011, 00:28
Guten Morgen

Weiß einer wie ich es hinbekomme das ich eine Liste hinzufüge wo z.b. die letzten 50 gewonnenen User drin stehen????

jpwfour
21.04.2011, 11:27
So wie ich das sehe, werden im Cron die alten Gewinner aus der Tabelle gelöscht, evtl. muss das auch so sein damit der Rest noch funktioniert :wink:

Am einfachsten wäre es vermutlich, die Gewinner aus der Buchungsliste auszulesen:


$sql = db_query('SELECT b.uid, b.buchungszeit, u.nickname
FROM vms_buchungen AS b LEFT JOIN vms_userdaten AS u
ON u.uid=b.uid
WHERE b.verwendungszweck="1h Aktivbonus"
ORDER BY b.buchungszeit DESC
LIMIT 50');

while($row = mysql_fetch_assoc($sql)){
print_a($row);
}

DJschatz27
21.04.2011, 13:38
Danke erstmal

und den füg ich im menü zum code denk das müßte richtig sein

RichardR
13.11.2011, 12:11
Habe mir jetzt das Addon aus dem Msxx-Shop gekauft. Leider bringt der Aufruf des Cronjobs nur folgendes:

Fatal error: Call to undefined function head() in /home/kd*****/public_html/*****.de/crons/aktivbonus.php on line 4In der Zeile 4 steht aber nichts :der:
Der Cronjob sieht wie folgt aus:

<?
@require_once ('../lib/functions.lib.php');
db_connect();

$aktivdaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_aktivbonus ORDER BY 'id' DESC LIMIT 1"));

// Variablen deklarieren

$admin = 138208; // <== Hier Admin ID Eintragen - braucht ja wohl keine Lose
$verguetung = 250000; // <== Hier die Vergütung eintragen die ausgezahlt werden soll !

$vergang = 55 * 60;
$vergang2 = 59 * 60;
$aktuell = time();
$zuletzt = $aktivdaten['zeit'] + $vergang;
$min = $aktuell - $vergang2;
$hoechsteid = $aktivdaten['id'];

// Checken ob genug Zeit vergangen ist ( 55 Minuten )

if ( $aktuell >= $zuletzt ) {
$bedingung1 = true;
} else {
$bedingung1 = false;
}

// Wenns passt einen User suchen der das ganze haben will ;)

if ( $bedingung1 ) {
$res = db_query("SELECT * FROM ".$db_prefix."_kontodaten WHERE lastka > '".$min."' AND uid != ".$admin." ORDER BY 'lastka' ASC");
$result = mysql_num_rows($res);

// Es ist mindestens einer da der den Jackpot abgreifen kann..
if ( $result > 0 ) {
$zufall = rand(1,$result);
$count = 1;
// den müssen wir natürlich erstmal suchen..
while ($ausgabe = mysql_fetch_array($res)) {
// Erwischt !
if ( $count == $zufall ) {
$buchungs_id = create_code(14);
db_query("INSERT INTO ".$db_prefix."_aktivbonus SET kid = '".$ausgabe['uid']."', zeit = '".$aktuell."'");
kontobuchung ('+',$verguetung,$ausgabe['uid']);
buchungsliste ($buchungs_id,$verguetung,"Aktivbonusgewinn",$ausgabe['uid']);
}
$count++;
}
// Nun schauen wer mal wieviele Einträge es gibt....
$res2 = db_query("SELECT * FROM ".$db_prefix."_aktivbonus ORDER BY `id` DESC");
$result2 = mysql_num_rows($res2);
$count2 = 1;
// Mehr als 10 also raus damit ! :)
if ($result2 > 10) {
while ($ausgabe2 = mysql_fetch_array($res2)) {
if ( $count2 > 10 ) {
db_query("DELETE FROM ".$db_prefix."_aktivbonus WHERE id = '".$ausgabe2['id']."'") or die(mysql_error());
}
$count2++;
}

}


}
}
// Da war wohl nicht genug Zeit dazwischen...
else {
echo("Der Cron wurde zu früh aufgerufen !");
}

// Zeit setzen

db_query ("UPDATE ".$db_prefix."_crons SET laufzeit = '".time()."' WHERE bezeichnung = 'Aktivbonus der letzten Stunde'");

?>


Hoffe auf Hilfe.

Jenny
13.11.2011, 16:25
Nimm mal

@require_once ('../lib/functions.lib.php');
db_connect();


oben raus, ich denke mal das will der nicht haben, weil das Addon ist noch für vms1.1 geschrieben

RichardR
13.11.2011, 17:05
Jetzt steht die Ausführzeit richtig dort. Allerdings steht immer noch "Es wurde noch kein Aktivbonus ausgezahlt!" dort.

Jenny
13.11.2011, 17:10
Ist denn schon ein Aktivbonus gezahlt worden?

RichardR
13.11.2011, 17:19
Ich bin der einzige Benutzer, meine ID habe ich zum Test noch nicht eingefügt. War die ganze Zeit online, habe heute 600 AP. Cronjob wurde ausgeführt.

In der Datenbank wurde kein Eintrag hinzugefügt.

Jenny
13.11.2011, 17:23
Wie soll der Cron denn was einfügen wenn keine ID da ist????:frusty::frusty::frusty:

RichardR
13.11.2011, 17:41
Nee, wenn die ID eingefügt ist, macht er es eben nicht, damit der Admin nichts bekommt :biggrin1: