+#!/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
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".
// 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);
+#!/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;
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();