]> git.mxchange.org Git - friendica.git/commitdiff
The daemon now works fine
authorMichael <heluecht@pirati.ca>
Thu, 14 Dec 2017 16:38:51 +0000 (16:38 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 14 Dec 2017 16:38:51 +0000 (16:38 +0000)
scripts/daemon.php [changed mode: 0644->0755]
scripts/dbstructure.php [changed mode: 0644->0755]
scripts/worker.php [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 76668ad..a9b8d1d
@@ -1,6 +1,7 @@
+#!/usr/bin/env php
 <?php
 /**
- * @file util/daemon.php
+ * @file scripts/daemon.php
  * @brief Run the worker from a daemon.
  *
  * This script was taken from http://php.net/manual/en/function.pcntl-fork.php
@@ -25,7 +26,19 @@ if (!isset($mode)) {
        die("Please use either 'start', 'stop' or 'status'.\n");
 }
 
-@include(".htconfig.php");
+if (empty($_SERVER["argv"][0])) {
+       die("Unexpected script behaviour. This message should never occur.\n");
+}
+
+// Fetch the base directory
+$directory = dirname($_SERVER["argv"][0]);
+
+if (substr($directory, 0, 1) != "/") {
+       $directory = $_SERVER["PWD"]."/".$directory;
+}
+$directory = realpath($directory."/..");
+
+@include($directory."/.htconfig.php");
 
 if (!isset($pidfile)) {
        die('Please specify a pid file in the variable $pidfile in the .htconfig.php. For example:'."\n".
@@ -93,7 +106,20 @@ while (true) {
        // Call the worker
        $cmdline = $php.' scripts/worker.php';
 
-       exec($cmdline);
+       $executed = false;
+
+       if (function_exists('proc_open')) {
+               $resource = proc_open($cmdline . ' &', array(), $foo, $directory);
+
+               if (is_resource($resource)) {
+                       $executed = true;
+                       proc_close($resource);
+               }
+       }
+
+       if (!$executed) {
+               exec($cmdline.' spawn');
+       }
 
        // Now sleep for 5 minutes
        sleep(300);
old mode 100644 (file)
new mode 100755 (executable)
index b23b481..9444d01
@@ -1,3 +1,4 @@
+#!/usr/bin/env php
 <?php
 /**
  * @file scripts/dbstructure.php
old mode 100644 (file)
new mode 100755 (executable)
index 6182895..c216dbb
@@ -1,4 +1,10 @@
+#!/usr/bin/env php
 <?php
+/**
+ * @file scripts/worker.php
+ * @brief Starts the background processing
+ */
+
 use Friendica\App;
 use Friendica\Core\Worker;
 use Friendica\Core\Config;
@@ -38,7 +44,15 @@ $a->set_baseurl(Config::get('system', 'url'));
 
 load_hooks();
 
+$spawn = (($_SERVER["argc"] <= 1) || ($_SERVER["argv"][1] == "spawn"));
+
+if ($spawn) {
+       Worker::spawnWorker();
+       killme();
+}
+
 $run_cron = (($_SERVER["argc"] <= 1) || ($_SERVER["argv"][1] != "no_cron"));
+
 Worker::processQueue($run_cron);
 
 Worker::unclaimProcess();