* Process priority for the worker
* @{
*/
-define('PRIORITY_HIGH', 1);
-define('PRIORITY_MEDIUM', 2);
-define('PRIORITY_LOW', 3);
+define('PRIORITY_UNDEFINED', 0);
+define('PRIORITY_CRITICAL', 10);
+define('PRIORITY_HIGH', 20);
+define('PRIORITY_MEDIUM', 30);
+define('PRIORITY_LOW', 40);
+define('PRIORITY_NEGLIGIBLE',50);
/* @}*/
$this->performance["start"] = microtime(true);
$this->performance["database"] = 0;
+ $this->performance["database_write"] = 0;
$this->performance["network"] = 0;
$this->performance["file"] = 0;
$this->performance["rendering"] = 0;
function proc_run($args) {
// Add the php path if it is a php call
- if (count($args) && $args[0] === 'php')
+ if (count($args) && ($args[0] === 'php' OR is_int($args[0]))) {
+
+ // If the last worker fork was less than 10 seconds before then don't fork another one.
+ // This should prevent the forking of masses of workers.
+ if (get_config("system", "worker")) {
+ if ((time() - get_config("system", "proc_run_started")) < 10)
+ return;
+
+ // Set the timestamp of the last proc_run
+ set_config("system", "proc_run_started", time());
+ }
+
$args[0] = ((x($this->config,'php_path')) && (strlen($this->config['php_path'])) ? $this->config['php_path'] : 'php');
+ }
// add baseurl to args. cli scripts can't construct it
$args[] = $this->get_baseurl();
$build = DB_UPDATE_VERSION;
}
if($build != DB_UPDATE_VERSION)
- proc_run(PRIORITY_HIGH, 'include/dbupdate.php');
+ proc_run(PRIORITY_CRITICAL, 'include/dbupdate.php');
}
* @brief Used to end the current process, after saving session state.
*/
function killme() {
- session_write_close();
+ if (!get_app()->is_backend())
+ session_write_close();
+
exit;
}
if (!is_array($load_arr))
return false;
- return max($load_arr);
+ return max($load_arr[0], $load_arr[1]);
}
/**