Script to reasonably set Instances.LastOkCheckTS, first commit
This commit is contained in:
parent
95b9ccfc31
commit
9b3cca9a45
1 changed files with 133 additions and 0 deletions
133
web/clitools/unatantum/updLastOkCheckTS.php
Normal file
133
web/clitools/unatantum/updLastOkCheckTS.php
Normal file
|
@ -0,0 +1,133 @@
|
|||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
/*
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
define('N',"\n");
|
||||
define('SNAME',basename(__FILE__));
|
||||
define('CONFIGFP',__DIR__.'/../../conf/mustard.ini');
|
||||
|
||||
$help='SYNOPSYS
|
||||
'.SNAME.' [options]
|
||||
DESCRIPTION
|
||||
This is a script to set the «LastOkCheckTS» field of «Instances» according
|
||||
to the «InstChecks» table.
|
||||
OPTIONS
|
||||
-h, --help
|
||||
Show this help text and exit.'.N;
|
||||
|
||||
for ($i=1; $i<$argc; $i++) {
|
||||
if ($argv[$i]=='-h' || $argv[$i]=='--help') {
|
||||
mexit($help,0);
|
||||
} else {
|
||||
mexit('Don’t know how to interpret «'.$argv[$i].'», please read the help text using «-h» or «--help» option.'.N,1);
|
||||
}
|
||||
}
|
||||
|
||||
use function mysqli_real_escape_string as myesc;
|
||||
|
||||
$iniarr=@parse_ini_file(CONFIGFP)
|
||||
or mexit('Could not open config file «'.CONFIGFP.'».'.N,1);
|
||||
|
||||
try { $link=@mysqli_connect($iniarr['db_host'],$iniarr['db_admin_name'],$iniarr['db_admin_password'],$iniarr['db_name'],$iniarr['db_port'],$iniarr['db_socket']); }
|
||||
catch (Exception $error) { mexit('could not connect to MySQL server: '.mysqli_connect_error().'.'.N,1,true); }
|
||||
// for php versions < 8
|
||||
if ($link===false) mexit('could not connect to MySQL server: '.mysqli_connect_error().'.'.N,1,true);
|
||||
try { $res=mysqli_set_charset($link,'utf8mb4'); }
|
||||
catch (Exception $error) { mexit('could not set «utf8mb4» charset for MySQL: '.mysqli_error($link).'.'.N,1,true); }
|
||||
// for php versions < 8
|
||||
if ($res===false) mexit('could not set MySQL charset: '.mysqli_errno($link).': '.mysqli_error($link).'.'.N,1,true);
|
||||
|
||||
$insts=[];
|
||||
$res=myq($link,'SELECT * FROM Instances');
|
||||
while ($row=mysqli_fetch_assoc($res)) $insts[]=$row;
|
||||
$cinsts=count($insts);
|
||||
$i=0;
|
||||
$now=time();
|
||||
foreach ($insts as $inst) {
|
||||
$i++;
|
||||
echo('Working on instance '.$i.'/'.$cinsts.' ('.round(100/$cinsts*$i,2).'%) with ID = '.$inst['ID'].' and URI = «'.$inst['URI'].'».'.N);
|
||||
$instchecks=[];
|
||||
$res=myq($link,'SELECT * FROM InstChecks WHERE InstID='.$inst['ID'].' ORDER BY Time DESC');
|
||||
while ($row=mysqli_fetch_assoc($res)) $instchecks[]=$row;
|
||||
//print_r($instchecks);
|
||||
$lastokcheckts=null;
|
||||
foreach ($instchecks as $check)
|
||||
if ($check['Status']==1) {
|
||||
$lastokcheckts=$check['Time'];
|
||||
break;
|
||||
}
|
||||
$cc=count($instchecks);
|
||||
if (is_null($lastokcheckts) && $cc>0)
|
||||
$lastokcheckts=$instchecks[$cc-1]['Time'];
|
||||
if (is_null($lastokcheckts) && !is_null($inst['FirstSeen']))
|
||||
$lastokcheckts=$inst['FirstSeen'];
|
||||
if (is_null($lastokcheckts) && !is_null($inst['InsertTS']))
|
||||
$lastokcheckts=$inst['InsertTS'];
|
||||
if (is_null($lastokcheckts))
|
||||
$lastokcheckts='NULL';
|
||||
echo('$lastokcheckts: '.$lastokcheckts.N);
|
||||
myq($link,'UPDATE Instances SET LastOkCheckTS='.$lastokcheckts.' WHERE ID='.$inst['ID']);
|
||||
echo('Updated LastOkCheckTS :-)'.N.'---'.N);
|
||||
}
|
||||
mysqli_close($link);
|
||||
echo('Done updating '.$cinsts.' «Instances» records :-).'.N);
|
||||
exit(0);
|
||||
|
||||
|
||||
// functions
|
||||
|
||||
function myq(&$l,$q) {
|
||||
try {
|
||||
$res=mysqli_query($l,$q);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
echo('query «'.$q.'» failed: '.$e->getMessage().' (error code: '.$e->getCode().').'.N);
|
||||
exit(3);
|
||||
}
|
||||
if ($res===false) {
|
||||
echo('query «'.$q.'» failed: '.mysqli_errno($l).': '.mysqli_error($l).'.'.N);
|
||||
exit(3);
|
||||
}
|
||||
return($res);
|
||||
}
|
||||
|
||||
function mexit($msg,$code) {
|
||||
global $link;
|
||||
if (isset($link) && $link!==false) mysqli_close($link);
|
||||
if ($code>0)
|
||||
fwrite(STDERR,$msg);
|
||||
else
|
||||
echo($msg);
|
||||
exit($code);
|
||||
}
|
||||
|
||||
function utstd($val) {
|
||||
if (is_null($val)) return(null);
|
||||
$val=round($val);
|
||||
return(date('Y-m-d H:i:s',$val));
|
||||
}
|
||||
|
||||
function pr($val) {
|
||||
if (is_null($val)) return('NULL');
|
||||
return($val);
|
||||
}
|
||||
|
||||
function eecho($msg) {
|
||||
echo($msg);
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in a new issue