<?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));