#!/usr/bin/php -q This script is only meant to run at the command line.'); } $dir = dirname(__FILE__); chdir($dir); /* include important functions */ include_once('./include/global.php'); include_once($config['base_path'] . '/lib/poller.php'); include_once($config['base_path'] . '/lib/rrd.php'); include_once($config['base_path'] . '/lib/reports.php'); global $current_user; /* process calling arguments */ $parms = $_SERVER['argv']; array_shift($parms); $debug = FALSE; $force = FALSE; if (sizeof($parms)) { foreach($parms as $parameter) { if (strpos($parameter, '=')) { list($arg, $value) = explode('=', $parameter); } else { $arg = $parameter; $value = ''; } switch ($arg) { case '-f': case '--force': $force = TRUE; break; case '-d': case '--debug': $debug = TRUE; break; case '--version': case '-V': case '-v': display_version(); exit; case '--help': case '-H': case '-h': display_help(); exit; default: print 'ERROR: Invalid Parameter ' . $parameter . "\n\n"; display_help(); exit; } } } /* install signal handlers for UNIX only */ if (function_exists('pcntl_signal')) { pcntl_signal(SIGTERM, 'sig_handler'); pcntl_signal(SIGINT, 'sig_handler'); } /* take time and log performance data */ $start = microtime(true); /* let's give this script lot of time to run for ever */ ini_set('max_execution_time', '0'); $t = time(); $number_sent = 0; # fetch all enabled reports that have a stratime in the past if (!$force) { $reports = db_fetch_assoc_prepared('SELECT * FROM reports WHERE mailtime < ? AND enabled="on"', array($t)); }else{ $reports = db_fetch_assoc("SELECT * FROM reports WHERE enabled='on'"); } reports_log('Cacti Reports reports found: ' . sizeof($reports), true, 'REPORTS', POLLER_VERBOSITY_MEDIUM); # execute each of those reports if (sizeof($reports)) { foreach ($reports as $report) { reports_log('Reports processing report: ' . $report['name'], true, 'REPORTS', POLLER_VERBOSITY_MEDIUM); $current_user = db_fetch_row_prepared('SELECT * FROM user_auth WHERE id = ?', array($report['user_id'])); if (isset($report['email'])) { generate_report($report, false, 'poller'); $number_sent++; } } /* record the end time */ $end = microtime(true); /* log statistics */ $reports_stats = sprintf('Time:%01.4f Reports:%s', $end - $start, $number_sent); reports_log('Reports STATS: ' . $reports_stats, true, 'REPORTS', POLLER_VERBOSITY_LOW); db_execute_prepared('REPLACE INTO settings (name, value) VALUES ("stats_reports", ?)', array($reports_stats)); }