Files
TSN-Ranksystem/jobs/clean.php
Newcomer1989 916cb41794 release 1.00
2016-04-17 14:11:49 +02:00

118 lines
6.0 KiB
PHP

<?PHP
function clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleanclients,$cleanperiod) {
$starttime = microtime(true);
$sqlmsg = '';
$sqlerr = 0;
$count_tsuser['count'] = 0;
$nowtime = time();
// clean old logs
if($mysqlcon->query("DELETE a FROM $dbname.job_log AS a CROSS JOIN(SELECT id FROM $dbname.job_log ORDER BY id DESC LIMIT 1 OFFSET 1000) AS b WHERE b.id>a.id") === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 1:",print_r($mysqlcon->errorInfo()),"\n";
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
// clean usersnaps older then 1 month
if($mysqlcon->query("DELETE a FROM $dbname.user_snapshot AS a CROSS JOIN(SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 1000 OFFSET 121) AS b WHERE a.timestamp=b.timestamp") === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 2:",print_r($mysqlcon->errorInfo()),"\n";
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
// clean old clients out of the database
if ($cleanclients == 1) {
$cleantime = $nowtime - $cleanperiod;
if(($lastclean = $mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='check_clean'")) === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 3:",print_r($mysqlcon->errorInfo()),"\n";
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
$lastclean = $lastclean->fetchAll();
if(($dbuserdata = $mysqlcon->query("SELECT uuid FROM $dbname.user")) === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 4:",print_r($mysqlcon->errorInfo()),"\n";
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
$countrs = $dbuserdata->rowCount();
$uuids = $dbuserdata->fetchAll();
if ($lastclean[0]['timestamp'] < $cleantime) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['clean'],"\n";
$start=0;
$break=200;
$clientdblist=array();
$countdel=0;
$countts=0;
while($getclientdblist=$ts3->clientListDb($start, $break)) {
$clientdblist=array_merge($clientdblist, $getclientdblist);
$start=$start+$break;
$count_tsuser=array_shift($getclientdblist);
if ($start == 100000 || $count_tsuser['count'] <= $start) {
break;
}
usleep($slowmode);
}
foreach($clientdblist as $uuidts) {
$single_uuid = $uuidts['client_unique_identifier']->toString();
$uidarrts[$single_uuid]= 1;
}
unset($clientdblist);
foreach($uuids as $uuid) {
if(isset($uidarrts[$uuid[0]])) {
$countts++;
} else {
$deleteuuids[] = $uuid[0];
$countdel++;
}
}
unset($uidarrts);
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleants'], $countts, $count_tsuser['count']),"\n";
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleanrs'], $countrs),"\n";
if(isset($deleteuuids)) {
$alldeldata = '';
foreach ($deleteuuids as $dellarr) {
$alldeldata = $alldeldata . "'" . $dellarr . "',";
}
$alldeldata = substr($alldeldata, 0, -1);
$alldeldata = "(".$alldeldata.")";
if ($alldeldata != '') {
if($mysqlcon->exec("DELETE FROM $dbname.user WHERE uuid IN $alldeldata") === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 5:",print_r($mysqlcon->errorInfo()),"\n";
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
} else {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleandel'], $countdel),"\n";
if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'") === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 6:",print_r($mysqlcon->errorInfo()),"\n";
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
}
}
} else {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['cleanno'],"\n";
if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'") === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 7:",print_r($mysqlcon->errorInfo()),"\n";
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
}
}
}
$buildtime = microtime(true) - $starttime;
if ($sqlerr == 0) {
if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'") === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 8:",print_r($mysqlcon->errorInfo()),"\n";
}
} else {
if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'") === false) {
echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 9:",print_r($mysqlcon->errorInfo()),"\n";
}
}
}
?>