From 0b41d9d7b8b4935c551d27ce9ba47e0761218d97 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Mon, 30 May 2022 17:10:32 +0200 Subject: [PATCH] ENHANCEMENT: use posix signal to check if daemon is running --- composer.json | 21 +++++++++++---------- composer.lock | 5 +++-- src/Command/DaemonCommand.php | 2 +- src/Controller/SiteController.php | 3 ++- src/Service/DaemonHelpers.php | 22 ++++++++++++++++++++++ src/Service/Secret.php | 1 - templates/job/edit.html.twig | 2 +- 7 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 src/Service/DaemonHelpers.php diff --git a/composer.json b/composer.json index 8ee28fb..f9bdbd4 100644 --- a/composer.json +++ b/composer.json @@ -10,6 +10,7 @@ "ext-intl": "*", "ext-openssl": "*", "ext-pcntl": "*", + "ext-posix": "*", "doctrine/doctrine-bundle": "^2.6", "doctrine/doctrine-migrations-bundle": "^3.2", "doctrine/orm": "^2.12", @@ -17,17 +18,17 @@ "pentatrion/vite-bundle": "^1.2", "phpseclib/phpseclib": "^3.0", "scienta/doctrine-json-functions": "~5.0.0", - "symfony/console": "6.0.*", - "symfony/dotenv": "6.0.*", + "symfony/console": "^6.0", + "symfony/dotenv": "^6.0", "symfony/flex": "^2", - "symfony/framework-bundle": "6.0.*", - "symfony/mailer": "6.0.*", - "symfony/proxy-manager-bridge": "6.0.*", - "symfony/runtime": "6.0.*", - "symfony/security-bundle": "6.0.*", - "symfony/translation": "6.0.*", - "symfony/twig-bundle": "6.0.*", - "symfony/yaml": "6.0.*" + "symfony/framework-bundle": "^6.0", + "symfony/mailer": "^6.0", + "symfony/proxy-manager-bridge": "^6.0", + "symfony/runtime": "^6.0", + "symfony/security-bundle": "^6.0", + "symfony/translation": "^6.0", + "symfony/twig-bundle": "^6.0", + "symfony/yaml": "^6.0" }, "config": { "allow-plugins": { diff --git a/composer.lock b/composer.lock index e523228..321407b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5b6d0f7b3419f7248fa3262cfb27697e", + "content-hash": "aecbf4d55d46cef867071ac3db00627a", "packages": [ { "name": "doctrine/annotations", @@ -7162,7 +7162,8 @@ "ext-iconv": "*", "ext-intl": "*", "ext-openssl": "*", - "ext-pcntl": "*" + "ext-pcntl": "*", + "ext-posix": "*" }, "platform-dev": [], "plugin-api-version": "2.2.0" diff --git a/src/Command/DaemonCommand.php b/src/Command/DaemonCommand.php index 9184b50..356ad3c 100644 --- a/src/Command/DaemonCommand.php +++ b/src/Command/DaemonCommand.php @@ -50,7 +50,7 @@ class DaemonCommand extends Command throw new \InvalidArgumentException('Time limit has incorrect value'); } $jobRepo->unlockJob(); - touch($this->kernel->getCacheDir() . '/daemon-running.lock'); + file_put_contents($this->kernel->getCacheDir() . '/daemon-running.lock', posix_getpid()); while(1) { if($endofscript !== false && time() > $endofscript) break; diff --git a/src/Controller/SiteController.php b/src/Controller/SiteController.php index 7fd513e..d1fdc32 100644 --- a/src/Controller/SiteController.php +++ b/src/Controller/SiteController.php @@ -3,6 +3,7 @@ namespace App\Controller; use App\Entity\Job; +use App\Service\DaemonHelpers; use Doctrine\Persistence\ManagerRegistry; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; @@ -17,7 +18,7 @@ class SiteController extends AbstractController $em = $doctrine->getManager(); $jobRepo = $em->getRepository(Job::class); $return = [ - "DaemonRunning" => file_exists($kernel->getCacheDir() . '/daemon-running.lock'), + "DaemonRunning" => DaemonHelpers::isProcessRunning($kernel->getCacheDir() . '/daemon-running.lock'), "JobsTotal" => count($jobRepo->getAllJobs()), "JobsDue" => count($jobRepo->getJobsDue()), "JobsRunning" => count($jobRepo->getRunningJobs()), diff --git a/src/Service/DaemonHelpers.php b/src/Service/DaemonHelpers.php new file mode 100644 index 0000000..0eb5bdc --- /dev/null +++ b/src/Service/DaemonHelpers.php @@ -0,0 +1,22 @@ + - {{ 'job.addedit.generalinfo.name.helptext' | trans }}] + {{ 'job.addedit.generalinfo.name.helptext' | trans }}