From 6d272ff894fa969e5a526caf6a91d60eda115c53 Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Mon, 28 Apr 2025 19:57:56 -0100 Subject: feat(async): AsyncProcess Signed-off-by: Maxence Lange --- core/BackgroundJobs/AsyncProcessJob.php | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 core/BackgroundJobs/AsyncProcessJob.php (limited to 'core/BackgroundJobs/AsyncProcessJob.php') diff --git a/core/BackgroundJobs/AsyncProcessJob.php b/core/BackgroundJobs/AsyncProcessJob.php new file mode 100644 index 00000000000..3fd43abf5ab --- /dev/null +++ b/core/BackgroundJobs/AsyncProcessJob.php @@ -0,0 +1,62 @@ +setTimeSensitivity(self::TIME_SENSITIVE); +// $this->setInterval(60 * 5); + $this->setInterval(1); + } + + protected function run(mixed $argument): void { + $this->discoverLoopAddress(); + + $this->forkManager->setWrapper($this->loggerProcessWrapper); + + $this->blockMapper->resetFailedBlock(); + + $metadata = ['executionTime' => ProcessExecutionTime::LATER]; + foreach ($this->blockMapper->getSessionOnStandBy() as $session) { + $this->forkManager->forkSession($session, $metadata); + } + + $this->blockMapper->removeSuccessfulBlock(); + + $this->forkManager->waitChildProcess(); + } + + private function discoverLoopAddress(): void { + if ($this->appConfig->hasKey('core', CoreConfigLexicon::ASYNC_LOOPBACK_ADDRESS, true)) { + return; + } + + $found = $this->forkManager->discoverLoopbackEndpoint(); + if ($found !== null) { + $this->appConfig->setValueString('core', CoreConfigLexicon::ASYNC_LOOPBACK_ADDRESS, $found); + } + } +} -- cgit v1.2.3