Verzeichnisstruktur phpBB-3.1.0
- Veröffentlicht
- 27.10.2014
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 |
run.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\console\command\cron;
015
016 use Symfony\Component\Console\Input\InputInterface;
017 use Symfony\Component\Console\Input\InputArgument;
018 use Symfony\Component\Console\Output\OutputInterface;
019
020 class run extends \phpbb\console\command\command
021 {
022 /** @var \phpbb\cron\manager */
023 protected $cron_manager;
024
025 /** @var \phpbb\lock\db */
026 protected $lock_db;
027
028 /**
029 * Construct method
030 *
031 * @param \phpbb\user $user The user object (used to get language information)
032 * @param \phpbb\cron\manager $cron_manager The cron manager containing
033 * the cron tasks to be executed.
034 * @param \phpbb\lock\db $lock_db The lock for accessing database.
035 */
036 public function __construct(\phpbb\user $user, \phpbb\cron\manager $cron_manager, \phpbb\lock\db $lock_db)
037 {
038 $this->cron_manager = $cron_manager;
039 $this->lock_db = $lock_db;
040 parent::__construct($user);
041 }
042
043 /**
044 * Sets the command name and description
045 *
046 * @return null
047 */
048 protected function configure()
049 {
050 $this
051 ->setName('cron:run')
052 ->setDescription($this->user->lang('CLI_DESCRIPTION_CRON_RUN'))
053 ->addArgument('name', InputArgument::OPTIONAL, $this->user->lang('CLI_DESCRIPTION_CRON_RUN_ARGUMENT_1'))
054 ;
055 }
056
057 /**
058 * Executes the command cron:run.
059 *
060 * Tries to acquire the cron lock, then if no argument has been given runs all ready cron tasks.
061 * If the cron lock can not be obtained, an error message is printed
062 * and the exit status is set to 1.
063 * If the verbose option is specified, each start of a task is printed.
064 * Otherwise there is no output.
065 * If an argument is given to the command, only the task whose name matches the
066 * argument will be started. If verbose option is specified,
067 * an info message containing the name of the task is printed.
068 * If no task matches the argument given, an error message is printed
069 * and the exit status is set to 2.
070 *
071 * @param InputInterface $input The input stream used to get the argument and verboe option.
072 * @param OutputInterface $output The output stream, used for printing verbose-mode and error information.
073 *
074 * @return int 0 if all is ok, 1 if a lock error occured and 2 if no task matching the argument was found.
075 */
076 protected function execute(InputInterface $input, OutputInterface $output)
077 {
078 if ($this->lock_db->acquire())
079 {
080 $task_name = $input->getArgument('name');
081 if ($task_name)
082 {
083 $exit_status = $this->run_one($input, $output, $task_name);
084 }
085 else
086 {
087 $exit_status = $this->run_all($input, $output);
088 }
089
090 $this->lock_db->release();
091 return $exit_status;
092 }
093 else
094 {
095 $output->writeln('<error>' . $this->user->lang('CRON_LOCK_ERROR') . '</error>');
096 return 1;
097 }
098 }
099
100 /**
101 * Executes all ready cron tasks.
102 *
103 * If verbose mode is set, an info message will be printed if there is no task to
104 * be run, or else for each starting task.
105 *
106 * @see execute
107 * @param InputInterface $input The input stream used to get the argument and verbose option.
108 * @param OutputInterface $output The output stream, used for printing verbose-mode and error information.
109 * @return int 0
110 */
111 protected function run_all(InputInterface $input, OutputInterface $output)
112 {
113 $run_tasks = $this->cron_manager->find_all_ready_tasks();
114
115 if ($run_tasks)
116 {
117 foreach ($run_tasks as $task)
118 {
119 if ($input->getOption('verbose'))
120 {
121 $output->writeln('<info>' . $this->user->lang('RUNNING_TASK', $task->get_name()) . '</info>');
122 }
123
124 $task->run();
125 }
126 }
127 else
128 {
129 if ($input->getOption('verbose'))
130 {
131 $output->writeln('<info>' . $this->user->lang('CRON_NO_TASK') . '</info>');
132 }
133 }
134
135 return 0;
136 }
137
138 /**
139 * Executes a given cron task, if it is ready.
140 *
141 * If there is a task whose name matches $task_name, it is run and 0 is returned.
142 * and if verbose mode is set, print an info message with the name of the task.
143 * If there is no task matching $task_name, the function prints an error message
144 * and returns with status 2.
145 *
146 * @see execute
147 * @param string $task_name The name of the task that should be run.
148 * @param InputInterface $input The input stream used to get the argument and verbose option.
149 * @param OutputInterface $output The output stream, used for printing verbose-mode and error information.
150 * @return int 0 if all is well, 2 if no task matches $task_name.
151 */
152 protected function run_one(InputInterface $input, OutputInterface $output, $task_name)
153 {
154 $task = $this->cron_manager->find_task($task_name);
155 if ($task)
156 {
157 if ($input->getOption('verbose'))
158 {
159 $output->writeln('<info>' . $this->user->lang('RUNNING_TASK', $task_name) . '</info>');
160 }
161
162 $task->run();
163 return 0;
164 }
165 else
166 {
167 $output->writeln('<error>' . $this->user->lang('CRON_NO_SUCH_TASK', $task_name) . '</error>');
168 return 2;
169 }
170 }
171 }
172