use Friendica\Core\Worker;
use Friendica\Database\DBA;
+// Get options
+$shortopts = '';
+$shortopts .= 'f';
+$longopts = [ 'foreground' ];
+$options = getopt($shortopts, $longopts);
+
// Ensure that daemon.php is executed from the base path of the installation
if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
$directory = dirname($_SERVER["argv"][0]);
$mode = "status";
}
-$foreground = in_array("--foreground", $_SERVER["argv"]);
+$foreground = array_key_exists('f', $options) || array_key_exists('foreground', $options);
if (!isset($mode)) {
die("Please use either 'start', 'stop' or 'status'.\n");
*/
use Friendica\App;
-use Friendica\BaseObject;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\Worker;
+// Get options
+$shortopts = '';
+$shortopts .= 'sc';
+$longopts = [ 'spawn', 'cron' ];
+$options = getopt($shortopts, $longopts);
+
// Ensure that worker.php is executed from the base path of the installation
if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
$directory = dirname($_SERVER["argv"][0]);
Addon::loadHooks();
-$spawn = (($_SERVER["argc"] == 2) && ($_SERVER["argv"][1] == "spawn"));
+$spawn = array_key_exists('s', $options) || array_key_exists('spawn', $options);
if ($spawn) {
Worker::spawnWorker();
killme();
}
-$run_cron = (($_SERVER["argc"] <= 1) || ($_SERVER["argv"][1] != "no_cron"));
+$run_cron = array_key_exists('c', $options) || array_key_exists('cron', $options);
Worker::processQueue($run_cron);
return false;
}
- public function proc_run($args)
+ /**
+ * Executes a child process with 'proc_open'
+ *
+ * @param string $command The command to execute
+ * @param array $args Arguments to pass to the command ( [ 'key' => value, 'key2' => value2, ... ]
+ */
+ public function proc_run($command, $args)
{
if (!function_exists('proc_open')) {
return;
}
- array_unshift($args, $this->getConfigValue('config', 'php_path', 'php'));
+ $cmdline = $this->getConfigValue('config', 'php_path', 'php') . $command;
- for ($x = 0; $x < count($args); $x ++) {
- $args[$x] = escapeshellarg($args[$x]);
+ foreach ($args as $key => $value) {
+ if (!is_null($value) && is_bool($value) && !$value) {
+ continue;
+ }
+
+ $cmdline .= ' --' . $key;
+ if (!is_null($value) && !is_bool($value)) {
+ $cmdline .= ' ' . $value;
+ }
}
- $cmdline = implode(' ', $args);
+ $cmdline = escapeshellarg($cmdline);
if ($this->min_memory_reached()) {
return;
*/
public static function spawnWorker($do_cron = false)
{
- $args = ["bin/worker.php"];
+ $command = 'bin/worker.php';
- if (!$do_cron) {
- $args[] = "no_cron";
- }
+ $args = [ 'cron' => $do_cron ];
- get_app()->proc_run($args);
+ get_app()->proc_run($command, $args);
// after spawning we have to remove the flag.
if (Config::get('system', 'worker_daemon_mode', false)) {
namespace Friendica\Test;
+use Friendica\BaseObject;
use Friendica\Core\Config;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
parent::setUp();
// Reusable App object
- $this->app = \Friendica\BaseObject::getApp();
+ $this->app = BaseObject::getApp();
// User data that the test database is populated with
$this->selfUser = [