<?php if (isset($argv[3])) { $processId = $argv[3]; } elseif (isset($_POST['processId'])) { $processId = $_POST['processId']; } elseif (isset($_GET['processId'])) { $processId = $_GET['processId']; } else { echo 'There is no pid to process.'; exit(1); } // Build the proc class for this process $procM = new processusManager(); $proc = new processus($processId); $procM->update($proc->id, 'running', 1); // Wait 500ms before moving the processing file usleep(500000); if (file_exists(get_ini('UPLOAD_FOLDER') . 'running/' . $proc->cmd)) { unlink(get_ini('UPLOAD_FOLDER') . 'running/' . $proc->cmd); } rename(get_ini('UPLOAD_FOLDER') . 'queue/' . $proc->cmd, get_ini('UPLOAD_FOLDER') . 'running/' . $proc->cmd); // Valid the xml file with XSD $domXmlFile = new DOMDocument(); $domXmlFile->preserveWhiteSpace = false; $domXmlFile->Load(get_ini('UPLOAD_FOLDER') . 'running/' . $proc->cmd); if ($domXmlFile->schemaValidate('plugins/core/xsd/core.xsd')) { // Get header data $item_XML = $domXmlFile->getElementsByTagName('XML')->item(0); $item_HEADER = $item_XML->getElementsByTagName('HEADER')->item(0); $item_DATA = $item_XML->getElementsByTagName('DATA')->item(0);
if (get_ini('MAX_PROCESS') < 2) { echo date('Y-m-d H:i:s') . ' - The parameter MAX_PROCESS is to low.' . "\n"; exit(20); } // Stop runner process if there is some which are not updated $q0 = get_link()->prepare('UPDATE ' . get_ini('BDD_PREFIX') . 'core_processus SET status=:status, deleted_date=:deleted_date, deleted_id=:deleted_id WHERE cmd=:cmd AND edited_date<:min_date AND deleted_date = 0'); $q0->execute(array('status' => 'failed', 'cmd' => get_ini('PROCESS_NAME'), 'min_date' => time() - 120, 'deleted_id' => $_SESSION['USER_ID'], 'deleted_date' => time())); // Check if other runner already exist $q0 = get_link()->prepare("SELECT id AS ID FROM " . get_ini('BDD_PREFIX') . "core_processus WHERE cmd = :cmd AND (deleted_date = 0 AND timeout>:current_date)"); $q0->execute(array('cmd' => get_ini('PROCESS_NAME'), 'current_date' => time())); $r0 = $q0->fetch(PDO::FETCH_OBJ); if (isset($r0->ID)) { echo date('Y-m-d H:i:s') . ' - There is already a loaded runner.' . "\n"; exit(0); } else { $procM = new processusManager(); $procId = $procM->create(0, get_ini('PROCESS_NAME'), '', time() + get_ini('PROCESS_LIFE_TIME')); $proc = new processus($procId); echo date('Y-m-d H:i:s') . ' - Runner loaded - process id: ' . $proc->id . "\n"; $lastCollectorTime = 0; while ($endTime > time()) { // Check if another process don't kill this process $q0 = get_link()->prepare("SELECT status AS PROCESSSTATUS FROM " . get_ini('BDD_PREFIX') . "core_processus WHERE id = :id AND status = 'failed'"); $q0->execute(array('id' => $proc->id)); $r0 = $q0->fetch(PDO::FETCH_OBJ); if (isset($r0->PROCESSSTATUS)) { echo date('Y-m-d H:i:s') . ' - Another process kill me.' . "\n"; exit(0); } // Update process status $procM->update($proc->id, 'running', floor((time() - $beginTime) * 100 / ($endTime - $beginTime)));
<?php // Load the process management class $procM = new processusManager(); // Check scheduled to plan jobs $q0 = get_link()->prepare("\nSELECT \n\tjob.id AS ID\nFROM \n\t" . get_ini('BDD_PREFIX') . "core_jobs job \nLEFT JOIN\n\t" . get_ini('BDD_PREFIX') . "core_plugins p\nON\n\tjob.id_plugin = p.id\nAND p.deleted_date = 0\nwhere \n\tjob.deleted_date = 0\nORDER BY \n\tp.name, job.page\n\t\t"); $q0->execute(); while ($r0 = $q0->fetch(PDO::FETCH_OBJ)) { $job = new job($r0->ID); if ($job->polling != 0 && $job->lastRun < time() - $job->polling) { if (!is_file(get_ini('UPLOAD_FOLDER') . 'queue/' . $job->pluginName . '_' . $job->page . '.xml') && !is_file(get_ini('UPLOAD_FOLDER') . 'running/' . $job->pluginName . '_' . $job->page . '.xml')) { $job->flagRunning(); include 'plugins/' . $job->pluginName . '/task_' . $job->page . '_loader.php'; } } } // List all job to do in the queue folder foreach (glob(get_ini('UPLOAD_FOLDER') . "queue/*.xml") as $jobName) { $fileFullPath = str_replace('\\', '/', $jobName); $jobName = substr($jobName, strrpos($jobName, '/') + 1, strlen($jobName) - strrpos($jobName, '/') - 1); // Valid the xml file with XSD $domXmlFile = new DOMDocument(); $domXmlFile->preserveWhiteSpace = false; $domXmlFile->Load(get_ini('UPLOAD_FOLDER') . 'queue/' . $jobName); if ($domXmlFile->schemaValidate('plugins/core/xsd/core.xsd')) { if ($procM->getId($jobName) == 0) { $childProcId = $procM->create(0, $jobName, '', 10); usleep(500); if ($procM->getCount($jobName) > 1) { // Wait some millisecond to avoid concurent write usleep(mt_rand(100, 20000));
d.id = o.id_device WHERE (o.created_date<:created_date AND o.edited_date<:edited_date) AND o.deleted_date=0 '); // TODO 17h30 => 7h30 $q0->execute(array('created_date' => mktime(17, 30, 0, date('m'), date('d'), date('Y')), 'edited_date' => mktime(17, 30, 0, date('m'), date('d'), date('Y')))); while ($r0 = $q0->fetch(PDO::FETCH_OBJ)) { if (trim($r0->HOSTNAME) && !in_array($r0->DEVICEID, $deviceArray)) { array_push($deviceArray, $r0->DEVICEID); } } foreach ($deviceArray as $deviceId) { $dev = new device($deviceId); $server = new server($deviceId); $procM = new processusManager(); if ($procM->isTaskProcess('task_audit_os_process_' . $dev->name) == 0) { // If no process exist for this hostname $xmlFileContent = ''; $xmlFileContent .= '<?xml version="1.0" encoding="UTF-8"?> <XML> <HEADER> <PPID>1</PPID> <DATE></DATE> <TIMEOUT>120</TIMEOUT> <PLUGIN>cmdb</PLUGIN> <PAGE>task_audit_os_process</PAGE> <COMMENT><![CDATA[]]></COMMENT> </HEADER> <DATA> <SERVERS>