. * * @package phpservermon * @author Pepijn Over * @copyright Copyright (c) 2008-2014 Pepijn Over * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3 * @version Release: @package_version@ * @link http://www.phpservermonitor.org/ **/ // include main configuration and functionality require_once dirname(__FILE__) . '/../src/bootstrap.php'; // prevent cron from running twice at the same time // however if the cron has been running for X mins, we'll assume it died and run anyway // if you want to change PSM_CRON_TIMEOUT, have a look in src/includes/psmconfig.inc.php. $time = time(); if(psm_get_conf('cron_running') == 1 && ($time - psm_get_conf('cron_running_time') < PSM_CRON_TIMEOUT)) { die('Cron is already running. Exiting.'); } psm_update_conf('cron_running', 1); psm_update_conf('cron_running_time', $time); // get the active servers from database $servers = $db->select( PSM_DB_PREFIX.'servers', array('active' => 'yes'), array('server_id', 'ip', 'port', 'label', 'type', 'pattern', 'status', 'active', 'email', 'sms') ); $updater = new \psm\Util\Updater\Status(); foreach ($servers as $server) { $status_org = $server['status']; // remove the old status from the array to avoid confusion between the new and old status unset($server['status']); $updater->setServer($server, $status_org); // check server status // it returns the new status, and performs the update check automatically. $status_new = $updater->getStatus(); // notify the nerds if applicable $updater->notify(); // update server status $save = array( 'last_check' => date('Y-m-d H:i:s'), 'status' => $status_new, 'error' => $updater->getError(), 'rtime' => $updater->getRtime(), ); // if the server is on, add the last_online value if($save['status'] == 'on') { $save['last_online'] = date('Y-m-d H:i:s'); } $db->save( PSM_DB_PREFIX . 'servers', $save, array('server_id' => $server['server_id']) ); $log_status = ($status_new == 'on') ? 1 : 0; psm_log_uptime($server['server_id'], $log_status, $updater->getRtime()); } psm_update_conf('cron_running', 0); ?>