Пример #1
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));