diff options
Diffstat (limited to 'phpBB/cron.php')
-rw-r--r-- | phpBB/cron.php | 85 |
1 files changed, 25 insertions, 60 deletions
diff --git a/phpBB/cron.php b/phpBB/cron.php index 787183f689..e134dbbe4c 100644 --- a/phpBB/cron.php +++ b/phpBB/cron.php @@ -1,9 +1,13 @@ <?php /** * -* @package phpBB3 -* @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. * */ @@ -33,75 +37,36 @@ function output_image() flush(); } -function do_cron($cron_lock, $run_tasks) -{ - global $config; - - foreach ($run_tasks as $task) - { - if (defined('DEBUG') && $config['use_system_cron']) - { - echo "[phpBB cron] Running task '{$task->get_name()}'\n"; - } - - $task->run(); - } - - // Unloading cache and closing db after having done the dirty work. - $cron_lock->release(); - garbage_collection(); -} - // Thanks to various fatal errors and lack of try/finally, it is quite easy to leave // the cron lock locked, especially when working on cron-related code. // // Attempt to alleviate the problem by doing setup outside of the lock as much as possible. -// -// If DEBUG is defined and cron lock cannot be obtained, a message will be printed. -if ($config['use_system_cron']) -{ - $cron = $phpbb_container->get('cron.manager'); -} -else -{ - $cron_type = request_var('cron_type', ''); +$cron_type = $request->variable('cron_type', ''); - // Comment this line out for debugging so the page does not return an image. - output_image(); -} +// Comment this line out for debugging so the page does not return an image. +output_image(); +/* @var $cron_lock \phpbb\lock\db */ $cron_lock = $phpbb_container->get('cron.lock_db'); if ($cron_lock->acquire()) { - if ($config['use_system_cron']) - { - $run_tasks = $cron->find_all_ready_tasks(); - } - else + /* @var $cron \phpbb\cron\manager */ + $cron = $phpbb_container->get('cron.manager'); + + $task = $cron->find_task($cron_type); + if ($task) { - // If invalid task is specified, empty $run_tasks is passed to do_cron which then does nothing - $run_tasks = array(); - $task = $cron->find_task($cron_type); - if ($task) + if ($task->is_parametrized()) { - if ($task->is_parametrized()) - { - $task->parse_parameters($request); - } - if ($task->is_ready()) - { - $run_tasks = array($task); - } + $task->parse_parameters($request); + } + if ($task->is_ready()) + { + $task->run(); } } - - do_cron($cron_lock, $run_tasks); -} -else -{ - if (defined('DEBUG')) - { - echo "Could not obtain cron lock.\n"; - } + $cron_lock->release(); } + +garbage_collection(); |