Verzeichnisstruktur phpBB-3.3.15


Veröffentlicht
28.08.2024

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

cron_runner_listener.php

Zuletzt modifiziert: 02.04.2025, 15:02 - Dateigröße: 1.96 KiB


001  <?php
002  /**
003   *
004   * This file is part of the phpBB Forum Software package.
005   *
006   * @copyright (c) phpBB Limited <https://www.phpbb.com>
007   * @license GNU General Public License, version 2 (GPL-2.0)
008   *
009   * For full copyright and license information, please see
010   * the docs/CREDITS.txt file.
011   *
012   */
013   
014  namespace phpbb\cron\event;
015   
016  use phpbb\cron\manager;
017  use phpbb\lock\db;
018  use phpbb\request\request_interface;
019  use Symfony\Component\EventDispatcher\EventSubscriberInterface;
020  use Symfony\Component\HttpKernel\KernelEvents;
021  use Symfony\Component\HttpKernel\Event\PostResponseEvent;
022   
023  /**
024   * Event listener that executes cron tasks, after the response was served
025   */
026  class cron_runner_listener implements EventSubscriberInterface
027  {
028      /**
029       * @var db
030       */
031      private $cron_lock;
032   
033      /**
034       * @var manager
035       */
036      private $cron_manager;
037   
038      /**
039       * @var request_interface
040       */
041      private $request;
042   
043      /**
044       * Constructor
045       *
046       * @param db                 $lock
047       * @param manager            $manager
048       * @param request_interface    $request
049       */
050      public function __construct(db $lock, manager $manager, request_interface $request)
051      {
052          $this->cron_lock    = $lock;
053          $this->cron_manager    = $manager;
054          $this->request        = $request;
055      }
056   
057      /**
058       * Runs the cron job after the response was sent
059       *
060       * @param PostResponseEvent    $event    The event
061       */
062      public function on_kernel_terminate(PostResponseEvent $event)
063      {
064          $request = $event->getRequest();
065          $controller_name = $request->get('_route');
066   
067          if ($controller_name !== 'phpbb_cron_run')
068          {
069              return;
070          }
071   
072          $cron_type = $request->get('cron_type');
073   
074          if ($this->cron_lock->acquire())
075          {
076              $task = $this->cron_manager->find_task($cron_type);
077              if ($task)
078              {
079                  if ($task->is_parametrized())
080                  {
081                      $task->parse_parameters($this->request);
082                  }
083   
084                  if ($task->is_ready())
085                  {
086                      $task->run();
087                  }
088              }
089              $this->cron_lock->release();
090          }
091      }
092   
093      /**
094       * {@inheritdoc}
095       */
096      static public function getSubscribedEvents()
097      {
098          return array(
099              KernelEvents::TERMINATE        => 'on_kernel_terminate',
100          );
101      }
102  }
103