Browse Source

The frontend worker can now fork background processes

pull/2984/head
Michael 4 years ago
parent
commit
cc5eebd173
2 changed files with 27 additions and 0 deletions
  1. +22
    -0
      include/poller.php
  2. +5
    -0
      mod/worker.php

+ 22
- 0
include/poller.php View File

@ -508,6 +508,28 @@ function call_worker_if_idle() {
return;
}
// Do we have "proc_open"? Then we can fork the poller
if (function_exists("proc_open")) {
// When was the last time that we called the poller?
// Less than 5 minutes? Then we quit
if ((time() - get_config("system", "proc_run_started")) < 300) {
return;
}
// Remove long running and crashed process entries
poller_kill_stale_workers();
// Do we have an already running worker? Then we quit here.
if (poller_active_workers() > 0) {
return;
}
get_app()->proc_run(array('php', 'include/poller.php'));
}
// We cannot execute background processes.
// We now run the processes from the frontend.
// This won't work with long running processes.
poller_run_cron();
clear_worker_processes();


+ 5
- 0
mod/worker.php View File

@ -14,6 +14,11 @@ function worker_init($a){
return;
}
// We don't need the following lines if we can execute background jobs
if (function_exists("proc_open")) {
return;
}
clear_worker_processes();
$workers = q("SELECT COUNT(*) AS `processes` FROM `process` WHERE `command` = 'worker.php'");


Loading…
Cancel
Save