refactor: getVSumField() to cache data for multiple user IDs

#313
This commit is contained in:
Martin Ambrus
2017-11-19 18:55:47 +01:00
parent e3a667de10
commit 5d951f8e9e
2 changed files with 55 additions and 24 deletions
+15 -6
View File
@@ -591,16 +591,25 @@ class Automation {
$q = "SELECT id, lastupdate FROM ".TB_PREFIX."users WHERE lastupdate < $time";
$array = $database->query_return($q);
// cache owner ID's, from which we'll create a grouped DB selection
$ownerIDs = [];
foreach($array as $indi) {
if($indi['lastupdate'] <= $time && $indi['lastupdate'] > 0){
$cp = $database->getVSumField($indi['id'], 'cp') * (time()-$indi['lastupdate'])/$dur_day;
$newupdate = time();
$q = "UPDATE ".TB_PREFIX."users set cp = cp + $cp, lastupdate = $newupdate where id = '".$indi['id']."'";
$database->query($q);
if($indi['lastupdate'] <= $time && $indi['lastupdate'] > 0) {
$ownerIDs[] = $indi['id'];
}
}
// get and cache the result
$ownerDatas = $database->getVSumField($ownerIDs, 'cp');
// update what's needed
$timeNow = time();
foreach ($ownerDatas as $record) {
$cp = $record['Total'] * ( $timeNow - $record['lastupdate'] ) / $dur_day;
$q = "UPDATE " . TB_PREFIX . "users set cp = cp + $cp, lastupdate = $timeNow where id = " . $record['owner'];
$database->query( $q );
}
if(file_exists("GameEngine/Prevention/culturepoints.txt")) {
unlink("GameEngine/Prevention/culturepoints.txt");
}