Wegen der Auszahlungen mach ich das einmal am Tag so:

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();
?>
Somit bleibt die gesamte Auszahlung erhalten und in der Tabelle steht einmal ein großer Auszahlungswert.

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.