Example #1
0
SystemEvent::setSeverityLevel(CINTIENT_LOG_SEVERITY);
$initialVersion = '';
sleep(5);
// defer it a little, to give it's [possibly] web-request-father process a chance to go away fast.
do {
    $GLOBALS['settings'] = SystemSettings::load();
    // Pull up refreshed system settings
    if ($initialVersion == '') {
        $initialVersion = $GLOBALS['settings'][SystemSettings::VERSION];
    }
    if ($GLOBALS['settings'][SystemSettings::VERSION] != $initialVersion) {
        SystemEvent::raise(SystemEvent::INFO, "Detected a new Cintient version. Terminating this old worker, so that the updated one can run...", 'runBuildWorker');
        exit(0);
    }
    $ret = true;
    $projects = Project::getNextToBuild();
    foreach ($projects as &$project) {
        SystemEvent::raise(SystemEvent::INFO, "Starting project build. [PID={$project->getId()}]", 'runBuildWorker');
        if (!($ret = $project->build())) {
            SystemEvent::raise(SystemEvent::INFO, "Project not built. [PID={$project->getId()}]", 'runBuildWorker');
        } else {
            SystemEvent::raise(SystemEvent::INFO, "Project built. [PID={$project->getId()}]", 'runBuildWorker');
        }
        $project->__destruct();
        $project = null;
        unset($project);
        // Take the chance to look if we're close to breaking the mem limit
        if (memory_get_usage(true) > (int) (Utility::phpIniSizeToBytes(ini_get('memory_limit')) * 0.9)) {
            SystemEvent::raise(SystemEvent::WARNING, "Getting close to system memory usage hard limit. Shutting down gracefully, while we can. [MEM_USAGE=" . Utility::bytesToHumanReadable(memory_get_usage(true)) . "] [MEM_PEAK=" . Utility::bytesToHumanReadable(memory_get_peak_usage(true)) . "]", 'runBuildWorker');
            exit(0);
        }