get_session(); $registry = $appbox->get_registry(); $request = http_request::getInstance(); $parm = $request->get_parms('key'); $scheduler_key = phrasea::scheduler_key(); $good_user = false; if ($session->is_authenticated()) { $user = User_Adapter::getInstance($session->get_usr_id(), $appbox); if ($user->ACL()->has_right('taskmanager')) $good_user = true; } if (!$good_user && (trim($scheduler_key) == '' || $scheduler_key !== $parm['key'])) { phrasea::headers(403); } set_time_limit(0); session_write_close(); ignore_user_abort(true); $system = system_server::get_platform(); if ($system != "DARWIN" && $system != "WINDOWS" && $system != "LINUX") { phrasea::headers(500); } $logdir = p4string::addEndSlash($registry->get('GV_RootPath') . 'logs'); $phpcli = $registry->get('GV_cli'); $nullfile = ''; switch ($system) { case "DARWIN": $cmd = $phpcli . ' -f ' . $registry->get('GV_RootPath') . "bin/console scheduler:start"; $nullfile = '/dev/null'; break; case "LINUX": $cmd = $phpcli . ' -f ' . $registry->get('GV_RootPath') . "bin/console scheduler:start"; $nullfile = '/dev/null'; break; case "WINDOWS": case "WINDOWS NT": $cmd = $phpcli . ' -f ' . $registry->get('GV_RootPath') . "bin/console scheduler:start"; $nullfile = 'NUL'; break; } //if ($logdir) //{ // $descriptors[1] = array("file", $logdir . "scheduler.log", "a+"); // $descriptors[2] = array("file", $logdir . "scheduler.error.log", "a+"); //} //else //{ $descriptors[1] = array("file", $nullfile, "a+"); $descriptors[2] = array("file", $nullfile, "a+"); //} $pipes = null; $cwd = $registry->get('GV_RootPath') . "bin/"; $proc = proc_open($cmd, $descriptors, $pipes, $cwd, null, array('bypass_shell' => true)); $pid = NULL; if (is_resource($proc)) { $proc_status = proc_get_status($proc); if ($proc_status['running']) $pid = $proc_status['pid']; } if ($pid !== NULL) { $msg = sprintf("scheduler '%s' started (pid=%s)", $cmd, $pid); my_syslog(LOG_INFO, $msg); } else { @fclose($pipes[1]); @fclose($pipes[2]); @proc_close($process); $msg = sprintf("scheduler '%s' failed to start", $cmd); my_syslog(LOG_INFO, $msg); } function my_syslog($level, $msg) { print($msg . "\n"); }