X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=bin%2Fdaemon.php;h=cd774fe25ebdc54c287de9de8945d96c4a7dfc41;hb=f842e7b81395803d4bd914175455d120837da312;hp=880115d0d01fb8a8ff94b103c3288d115062d483;hpb=8db0e090d7afc3fbfeaf7a587140c80c98233484;p=friendica.git diff --git a/bin/daemon.php b/bin/daemon.php index 880115d0d0..cd774fe25e 100755 --- a/bin/daemon.php +++ b/bin/daemon.php @@ -1,7 +1,7 @@ #!/usr/bin/env php addRules(include __DIR__ . '/../static/dependencies.config.php'); -$dice = $dice->addRule(LoggerInterface::class,['constructParams' => ['daemon']]); +/** @var \Friendica\Core\Addon\Capability\ICanLoadAddons $addonLoader */ +$addonLoader = $dice->create(\Friendica\Core\Addon\Capability\ICanLoadAddons::class); +$dice = $dice->addRules($addonLoader->getActiveAddonConfig('dependencies')); +$dice = $dice->addRule(LoggerInterface::class, ['constructParams' => [Logger\Capability\LogChannel::DAEMON]]); DI::init($dice); \Friendica\Core\Logger\Handler\ErrorHandler::register($dice->create(\Psr\Log\LoggerInterface::class)); -$a = DI::app(); if (DI::mode()->isInstall()) { die("Friendica isn't properly installed yet.\n"); @@ -71,13 +74,13 @@ if (DI::mode()->isInstall()) { DI::mode()->setExecutor(Mode::DAEMON); -DI::config()->load(); +DI::config()->reload(); if (empty(DI::config()->get('system', 'pidfile'))) { die(<< [ + + 'system' => [ 'pidfile' => '/path/to/daemon.pid', ], TXT @@ -115,7 +118,7 @@ if (is_readable($pidfile)) { } if (empty($pid) && in_array($mode, ['stop', 'status'])) { - DI::config()->set('system', 'worker_daemon_mode', false); + DI::keyValue()->set('worker_daemon_mode', false); die("Pidfile wasn't found. Is the daemon running?\n"); } @@ -126,7 +129,7 @@ if ($mode == 'status') { unlink($pidfile); - DI::config()->set('system', 'worker_daemon_mode', false); + DI::keyValue()->set('worker_daemon_mode', false); die("Daemon process $pid isn't running.\n"); } @@ -137,7 +140,7 @@ if ($mode == 'stop') { Logger::notice('Worker daemon process was killed', ['pid' => $pid]); - DI::config()->set('system', 'worker_daemon_mode', false); + DI::keyValue()->set('worker_daemon_mode', false); die("Worker daemon process $pid was killed.\n"); } @@ -181,7 +184,7 @@ if (!$foreground) { DBA::connect(); } -DI::config()->set('system', 'worker_daemon_mode', true); +DI::keyValue()->set('worker_daemon_mode', true); // Just to be sure that this script really runs endlessly set_time_limit(0); @@ -193,6 +196,9 @@ $last_cron = 0; // Now running as a daemon. while (true) { + // Check the database structure and possibly fixes it + Update::check(DI::basePath(), true); + if (!$do_cron && ($last_cron + $wait_interval) < time()) { Logger::info('Forcing cron worker call.', ['pid' => $pid]); $do_cron = true; @@ -244,5 +250,6 @@ while (true) { } function shutdown() { + posix_kill(posix_getpid(), SIGTERM); posix_kill(posix_getpid(), SIGHUP); }