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. |
|
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
cron_runner_listener.php
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