PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erweiterte Datenbank Optimierung der Bettelfunktion



Hardy
17.03.2008, 11:42
Um das Betteln noch ein wenig datenbank schonender zu machen habe ich die reloads der bettelaufrufe bei mir in eine extra tabelle geschrieben und auch speziell für das betteln die indexe gesetzt.

Wer das ganze verwenden möchte...
SQL Code ausführen:


CREATE TABLE IF NOT EXISTS `vms_reloads_betteln` (
`ip` varchar(15) NOT NULL default '',
`uid` int(7) NOT NULL default '0',
`tan` varchar(32) NOT NULL default '',
`bis` varchar(10) NOT NULL default '',
KEY `bis` (`ip`,`bis`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Folgende bettel.php verwenden um die reloads auch in die richtige tabelle zu schreiben.


<?
$_GET['ref'] = (int)$_GET['ref'];


if ($pageconfig['reload_betteln'] == 0){
$betteltext = '<b>Die Bettelfunktion ist auf dieser Seite deaktiviert';
}else{
if ($_SESSION['uid'] == $_GET['ref'] || $_GET['ref'] == $_COOKIE['uid']){
$betteltext = '<b><font color="#FF0000">Du kannst dich nicht selbst anbetteln!</font></b>';
}else{
$reloadcheck = db_query("SELECT bis FROM ".$db_prefix."_reloads_betteln WHERE ip = '".$ip."' and tan = 'bettelaufruf' and bis >= ".time()." LIMIT 1");

if (!mysql_num_rows($reloadcheck)) {
$minimum = $pageconfig['min_betteln'];
$maximum = $pageconfig['max_betteln'];
srand((double)microtime()*1000000);
$bettelsumme = rand($minimum*100,$maximum*100)/100;
$new_reload = time()+$pageconfig['reload_betteln'];
db_query("INSERT INTO ".$db_prefix."_reloads_betteln (ip,uid,tan,bis) VALUES ('".$ip."','".$_GET['ref']."','bettelaufruf','".$new_reload."')");
db_query("UPDATE ".$db_prefix."_kontodaten SET angebettelt =angebettelt + 1, bv = bv + ".$bettelsumme.", kontostand = kontostand + '".$bettelsumme."' WHERE uid = '".$_GET['ref']."'");

refumsatz ($bettelsumme,$_GET['ref']);
aktivralley ($bettelsumme,$_GET['ref']);
bilanz(0,$bettelsumme);
$betteltext = '<b>Du hast für den User '.$_GET['ref'].' gerade '.$bettelsumme.' '.$waehrung.' erbettelt!</b>';
} else {
$reloadcheck = mysql_fetch_array($reloadcheck);
$betteltext = '<b><font color="#FF0000">Du bist noch für '. round((($reloadcheck['bis'] - time())/60),0) .' Minuten fürs Betteln gesperrt</font></b>';
}
}
}
?>

<?head("Betteln auf ".$seitenname);?>
Verdiene auch Du mit!<br>
Melde Dich bei <?=$seitenname;?> an und bewirbe Deinen persönlichen Bettellink, so
verdienst Du deine <?=$waehrung;?> fast wie im Schlaf!<br>
<br>
<div align="center"><?=$betteltext;?></div>
<?foot();?>

<?
$filename = 'lib/texte/bettelwerbung.txt';
$fp = fopen ($filename, "r");
$inhalt = fread ($fp, filesize ($filename));
fclose ($fp);
$inhalt = str_replace('\\', '', $inhalt);

if ($inhalt != ''){
head("Werbung dieser Seite");
echo nl2br($inhalt);
foot();
}
?>

FLash
18.03.2008, 06:20
habs bei mir nu auch geändert.. danke ;)

Fabian17
28.11.2009, 22:35
Auch wenn der Post gute 1,5 Jahre alt ist, wie sehe hierfür die Funktion zum löschen der Reloads aus?

oder werden die selbständig aus der DB entfernt?


<? db_query ("DELETE FROM ´vms_reloads_betteln´ WHERE bis <= ".(time()));
?>


So?

kesselchen
29.11.2009, 14:08
das steht glaub ich in der content/betteln.php oben generell mit drin..

LG