Beispiel #1
0
    }
    $cmd = 'screen -L -S ' . $rInstanceScreenName . ' -p 0 -X stuff "' . $command . "\n" . '"';
    logMessage(" - " . $command);
    shell_exec($cmd);
}
//initialize service if not already initialized
if (!isDaemonsCreated()) {
    logMessage('<pre>');
    if (!isServiceInitiating()) {
        deleteRInstances();
        serviceInitiating();
        for ($daemonIndex = 1; $daemonIndex <= $maxNumberOfDaemons; $daemonIndex++) {
            $rInstanceScreenName = 'r.instance.' . $daemonIndex;
            initializingRInstance($rInstanceScreenName);
            // Initialize a screen with R either with the useXVirtualFrameBuffer or not
            $initiateRInstanceCommand = 'cd ' . $projectHome . '/workspace/;export LC_ALL=en_US.UTF-8;export LANG=en_US.UTF-8;export LANGUAGE=en_US.UTF-8;export LESSCHARSET=utf-8;' . 'screen -U -A -m -d -S ' . $rInstanceScreenName . ($useXVirtualFrameBuffer ? ' xvfb-run -a ' . ($setXVirtualFrameBufferBitDepth ? '-s "-screen 0 1024x768x16" ' : '') : '') . ' R --no-save';
            logMessage($initiateRInstanceCommand);
            shell_exec($initiateRInstanceCommand);
            // inform R instance of its name
            $RInitializeCommand = 'r.instance.screen.name <- \\"' . $rInstanceScreenName . '\\";';
            // load its sources
            $RInitializeCommand = $RInitializeCommand . 'source(\\"' . $projectHome . $layerHome . '/initialization/0.initialize.R\\");';
            //the last daemon sets the service as initialized
            if ($daemonIndex == $maxNumberOfDaemons) {
                $RInitializeCommand = $RInitializeCommand . 'mark.service.as.available();';
            }
            executeRCommand($rInstanceScreenName, $RInitializeCommand, 0);
        }
        logMessage('</pre>');
    }
}
Beispiel #2
0
if (isPlotParametersValid($_GET)) {
    #-----------------------------------------------------------------------------
    $millisecondsStart = round(microtime(true) * 1000);
    $plotFileName = $projectHome . $plotsDirectory . getPlotFileName($_GET);
    $isCached = FALSE;
    if (file_exists($plotFileName . ($_GET["media"] == "svg" ? ".gz" : "")) && $cache) {
        $isCached = TRUE;
    } else {
        include 'RRML/reserve.php';
        $rInstanceScreenName = reserveRDaemon();
        if (!is_null($rInstanceScreenName)) {
            if (file_exists($plotFileName)) {
                unlink($plotFileName);
            }
            $reservedRDaemonAvailable = false;
            executeRCommand($rInstanceScreenName, getRFunctionCall($_GET));
            for ($counter = 1; $counter <= 1000; $counter++) {
                $reservedRDaemonAvailable = isReservedRDaemonAvailable($rInstanceScreenName);
                if ($reservedRDaemonAvailable) {
                    break;
                }
                time_nanosleep(0, 100000000);
            }
            if (!$reservedRDaemonAvailable) {
                die('Please try again in a few minutes');
            }
        } else {
            die('Could not reserve Instance. Please try again in a few seconds');
        }
    }
    $millisecondsEnd = round(microtime(true) * 1000);