<?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);
Beispiel #2
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)));
Beispiel #3
0
<?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>