]> git.mxchange.org Git - friendica.git/commitdiff
The frontend worker can now fork background processes
authorMichael <heluecht@pirati.ca>
Tue, 29 Nov 2016 22:40:19 +0000 (22:40 +0000)
committerMichael <heluecht@pirati.ca>
Tue, 29 Nov 2016 22:40:19 +0000 (22:40 +0000)
include/poller.php
mod/worker.php

index b8e14a09655f5acc07b0eaa477d1655432c4346b..3aa9cf4b64e864e11f261a7a81a6830d17b3a9f8 100644 (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();
index 3fb86dd5b2dadf0d82f7cd924c0049c7ad5aab44..9d0902bf3666a2270c3273ccd48928d3f8305bd4 100644 (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'");