<?php
|
// Skrypt aktualizujący dane pobierane okresowo.
|
|
define('MAINSTAR', ' '."\033".'[1;37m*'.' ');
|
define('NORMAL', "\033".'[0m');
|
define('STAR', ' '."\033".'[1;34m*'."\033".'[0m ');
|
define('OK', "\033[55G\033[32m".'[ OK ]'."\033[0m\n");
|
define('NOT', "\033[55G\033[33m".'[ OK ]'."\033[0m\n");
|
define('FAIL', "\033[55G\033[31m".'[ FAIL ]'."\033[0m\n");
|
|
echo "\033".'[1;37;44m Bot GG - Skrypt aktualizujący ('.date('d.m.Y H:i:s').')'."\033".'[K'."\033".'[0m'."\n\n";
|
|
function crontab_field($field, $number) {
|
$field = explode(',', $field);
|
foreach($field as $one) {
|
$mod = FALSE;
|
$range_start = 0;
|
$range_stop = 0;
|
|
if(($pos=strpos($one, '/'))!==FALSE) {
|
$mod = (int)substr($one, $pos+1);
|
if($mod==0) {
|
continue;
|
}
|
$one = substr($one, 0, $pos);
|
}
|
|
if($one != '*') {
|
if(($pos=strpos($one, '-'))!==FALSE) {
|
$range_start = (int)substr($one, 0, $pos);
|
$range_stop = (int)substr($one, $pos+1);
|
}
|
else
|
{
|
$range_start = $one;
|
$range_stop = $one;
|
}
|
|
if($range_start > $number OR $range_stop < $number) {
|
continue;
|
}
|
}
|
|
if($mod && ($number-$range_start)%$mod != 0) {
|
continue;
|
}
|
|
return TRUE;
|
}
|
|
return FALSE;
|
}
|
|
function crontab_match($line) {
|
$parts = preg_split('/[\40\t]+/', $line, 6);
|
// Minutes part - skip
|
|
// Hour part
|
if(!crontab_field($parts[1], date('H'))) {
|
return FALSE;
|
}
|
|
// Day part
|
if(!crontab_field($parts[2], date('j'))) {
|
return FALSE;
|
}
|
|
// Month part
|
if(!crontab_field($parts[3], date('n'))) {
|
return FALSE;
|
}
|
|
// Weekday part
|
if(!crontab_field($parts[4], date('w'))) {
|
return FALSE;
|
}
|
|
return $parts[5];
|
}
|
|
function launch($file) {
|
return include($file);
|
}
|
|
function crontab_parse($dir) {
|
chdir($dir);
|
|
$done = FALSE;
|
|
$file = file('crontab');
|
foreach($file as $line) {
|
$line = trim($line);
|
if(empty($line) || substr($line, 0, 1)=='#') continue;
|
|
$ret = crontab_match($line);
|
if($ret) {
|
if(!$done)
|
echo "\n";
|
launch($ret);
|
$done = TRUE;
|
}
|
}
|
|
if(!$done) {
|
echo NOT;
|
}
|
|
chdir('..');
|
}
|
|
chdir(dirname(__FILE__));
|
|
$dirs = glob('./*', GLOB_ONLYDIR);
|
foreach($dirs as $dir) {
|
if(file_exists($dir.'/crontab')) {
|
echo MAINSTAR.'Moduł '.basename($dir).NORMAL;
|
crontab_parse($dir);
|
}
|
}
|
|
echo "\n";
|
?>
|