use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\Logger;
use Friendica\Core\Worker;
+use Friendica\Database\DBA;
+
+// Get options
+$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]);
if (substr($directory, 0, 1) != "/") {
- $directory = $_SERVER["PWD"]."/".$directory;
+ $directory = $_SERVER["PWD"] . "/" . $directory;
}
- $directory = realpath($directory."/..");
+ $directory = realpath($directory . "/..");
chdir($directory);
}
-require_once "boot.php";
-require_once "include/dba.php";
+require dirname(__DIR__) . '/vendor/autoload.php';
$a = new App(dirname(__DIR__));
-if ($a->mode === App::MODE_INSTALL) {
+if ($a->getMode()->isInstall()) {
die("Friendica isn't properly installed yet.\n");
}
Config::load();
if (empty(Config::get('system', 'pidfile'))) {
- die('Please set system.pidfile in config/local.ini.php. For example:'."\n".
- '[system]'."\n".
- 'pidfile = /path/to/daemon.pid'."\n");
+ die(<<<TXT
+Please set system.pidfile in config/local.config.php. For example:
+
+ 'system' => [
+ 'pidfile' => '/path/to/daemon.pid',
+ ],
+TXT
+ );
}
$pidfile = Config::get('system', 'pidfile');
$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");
die("Unexpected script behaviour. This message should never occur.\n");
}
-$pid = @file_get_contents($pidfile);
+$pid = null;
+
+if (is_readable($pidfile)) {
+ $pid = intval(file_get_contents($pidfile));
+}
if (empty($pid) && in_array($mode, ["stop", "status"])) {
Config::set('system', 'worker_daemon_mode', false);
unlink($pidfile);
- logger("Worker daemon process $pid was killed.", LOGGER_DEBUG);
+ Logger::log("Worker daemon process $pid was killed.", Logger::DEBUG);
Config::set('system', 'worker_daemon_mode', false);
die("Worker daemon process $pid was killed.\n");
die("Daemon process $pid is already running.\n");
}
-logger('Starting worker daemon.', LOGGER_DEBUG);
+Logger::log('Starting worker daemon.', Logger::DEBUG);
if (!$foreground) {
echo "Starting worker daemon.\n";
// fclose(STDOUT); // file descriptors as we
// fclose(STDERR); // are running as a daemon.
- dba::disconnect();
+ DBA::disconnect();
register_shutdown_function('shutdown');
// Now running as a daemon.
while (true) {
if (!$do_cron && ($last_cron + $wait_interval) < time()) {
- logger('Forcing cron worker call.', LOGGER_DEBUG);
+ Logger::log('Forcing cron worker call.', Logger::DEBUG);
$do_cron = true;
}
if ($do_cron) {
// We force a reconnect of the database connection.
// This is done to ensure that the connection don't get lost over time.
- dba::reconnect();
+ DBA::reconnect();
$last_cron = time();
}
- logger("Sleeping", LOGGER_DEBUG);
+ Logger::log("Sleeping", Logger::DEBUG);
$start = time();
do {
$seconds = (time() - $start);
if ($timeout) {
$do_cron = true;
- logger("Woke up after $wait_interval seconds.", LOGGER_DEBUG);
+ Logger::log("Woke up after $wait_interval seconds.", Logger::DEBUG);
} else {
$do_cron = false;
- logger("Worker jobs are calling to be forked.", LOGGER_DEBUG);
+ Logger::log("Worker jobs are calling to be forked.", Logger::DEBUG);
}
}