Wegen der Auszahlungen mach ich das einmal am Tag so:
Somit bleibt die gesamte Auszahlung erhalten und in der Tabelle steht einmal ein großer Auszahlungswert.Code:<?php
@require_once('../lib/functions.lib.php');
db_connect();
$alle=mysql_fetch_array(db_query("SELECT `uid` FROM `vms_userdaten` ORDER BY `uid` DESC LIMIT 1")); //höchste uid auslesen
$c=1; // erste uid
# 30 Tage
$dauer = 60*60*24*30;
$frist = time()-$dauer;
while($c<=$alle[uid]){
$summe=mysql_fetch_array(db_query("SELECT SUM(buchungsmenge) AS xxx FROM vms_buchungen WHERE buchungszeit<".$frist." AND (verwendungszweck='Auszahlung') AND uid=".$c.""));
//gesamtauszahlungssumme des users bis zur frist auslesen
if ($summe[xxx]){ //wenn summe vorhanden - bei bis dahin nicht ausgezahlt, hat summe keinen wert
echo "User ".$c." wird bereinigt - ".$summe[xxx]."<br>";
db_query("DELETE FROM vms_buchungen WHERE buchungszeit<".$frist." AND (verwendungszweck='Auszahlung' OR verwendungszweck='Auszahlung') AND uid=".$c.""); //alte auszahlungen löschen
db_query("INSERT INTO vms_buchungen (uid,buchungszeit,buchungs_id,buchungsmenge,verwendungszweck) VALUES ('".$c."', '".$frist."', '', '".$summe[xxx]."', 'Auszahlung')"); //neue auszahlungssumme eintragen
}
$c++; //nächster user
}
db_close();
?>
Also statt:
-3000
-3423
-7945
steht da nun
-14368.
Wenn man jeden Tag hunderte Auszahlungen machen muss, dann geht da schon einiges in die Datenbank und so bleiben dann auch die Mediadaten und Statpicker so wie sie waren. ;)