mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-25 04:23:38 +01:00
[feature/system-cron] WIP on reorganizing cron tasks into classes.
PHPBB3-9596
This commit is contained in:
parent
9be4f438eb
commit
0532048292
60
phpBB/includes/cron_task.php
Normal file
60
phpBB/includes/cron_task.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cron task interface
|
||||
* @package phpBB3
|
||||
*/
|
||||
interface cron_task
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run();
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*
|
||||
* For example, a cron task that prunes forums can only run when
|
||||
* forum pruning is enabled.
|
||||
*/
|
||||
public function is_runnable();
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run();
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can be run in shutdown function.
|
||||
*/
|
||||
public function is_shutdown_function_safe();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parametrized cron task interface
|
||||
* @package phpBB3
|
||||
*/
|
||||
interface parametrized_cron_task extends cron_task
|
||||
{
|
||||
/**
|
||||
* Returns parameters of this cron task as a query string.
|
||||
*/
|
||||
public function get_url_query_string();
|
||||
}
|
64
phpBB/includes/cron_task_base.php
Normal file
64
phpBB/includes/cron_task_base.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cron task base class. Provides sensible defaults for cron tasks
|
||||
* and partially implements cron task interface, making writing cron tasks easier.
|
||||
*
|
||||
* At a minimum, subclasses must override the run() method.
|
||||
*
|
||||
* Cron tasks need not inherit from this base class. If desired,
|
||||
* they may implement cron task interface directly.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
abstract class cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
abstract public function run();
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*
|
||||
* For example, a cron task that prunes forums can only run when
|
||||
* forum pruning is enabled.
|
||||
*/
|
||||
public function is_runnable()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can be run in shutdown function.
|
||||
*/
|
||||
public function is_shutdown_function_safe()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
45
phpBB/includes/cron_tasks/standard/prune_all_forums.php
Normal file
45
phpBB/includes/cron_tasks/standard/prune_all_forums.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prune all forums cron task.
|
||||
*
|
||||
* It is intended to be invoked from system cron.
|
||||
* This task will find all forums for which pruning is enabled, and will
|
||||
* prune all forums as necessary.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class prune_all_forums_cron_task extends cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*/
|
||||
public function is_runnable()
|
||||
{
|
||||
global $config;
|
||||
return !!$config['use_system_cron'];
|
||||
}
|
||||
}
|
67
phpBB/includes/cron_tasks/standard/prune_forum.php
Normal file
67
phpBB/includes/cron_tasks/standard/prune_forum.php
Normal file
@ -0,0 +1,67 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prune one forum cron task.
|
||||
*
|
||||
* It is intended to be used when cron is invoked via web.
|
||||
* This task can decide whether it should be run using data obtained by viewforum
|
||||
* code, without making additional database queries.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class prune_forum_cron_task extends cron_task_base implements parametrized_cron_task
|
||||
{
|
||||
public function __construct($forum_data)
|
||||
{
|
||||
$this->forum_data = $forum_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*/
|
||||
public function is_runnable()
|
||||
{
|
||||
global $config;
|
||||
return !$config['use_system_cron'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
return $this->forum_data['enable_prune'] && $this->forum_data['prune_next'] < time();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns parameters of this cron task as a query string.
|
||||
*/
|
||||
public function get_url_query_string()
|
||||
{
|
||||
return 'f=' . $this->forum_data['forum_id'];
|
||||
}
|
||||
}
|
64
phpBB/includes/cron_tasks/standard/queue.php
Normal file
64
phpBB/includes/cron_tasks/standard/queue.php
Normal file
@ -0,0 +1,64 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Queue cron task. Sends email and jabber messages queued by other scripts.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class queue_cron_task extends cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
|
||||
$queue = new queue();
|
||||
$queue->process();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*/
|
||||
public function is_runnable()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
return file_exists($phpbb_root_path . 'cache/queue.' . $phpEx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
global $config;
|
||||
return $config['last_queue_run'] < time() - $config['queue_interval_config'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can be run in shutdown function.
|
||||
*/
|
||||
public function is_shutdown_function_safe()
|
||||
{
|
||||
global $config;
|
||||
return !$config['smtp_delivery'];
|
||||
}
|
||||
}
|
53
phpBB/includes/cron_tasks/standard/tidy_cache.php
Normal file
53
phpBB/includes/cron_tasks/standard/tidy_cache.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tidy cache cron task.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class tidy_cache_cron_task extends cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
global $cache;
|
||||
$cache->tidy();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*/
|
||||
public function is_runnable()
|
||||
{
|
||||
global $cache;
|
||||
return method_exists($cache, 'tidy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
global $config;
|
||||
return $config['cache_last_gc'] < time() - $config['cache_gc'];
|
||||
}
|
||||
}
|
44
phpBB/includes/cron_tasks/standard/tidy_database.php
Normal file
44
phpBB/includes/cron_tasks/standard/tidy_database.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tidy database cron task.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class tidy_database_cron_task extends cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
|
||||
tidy_database();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
global $config;
|
||||
return $config['database_last_gc'] < time() - $config['database_gc'];
|
||||
}
|
||||
}
|
72
phpBB/includes/cron_tasks/standard/tidy_search.php
Normal file
72
phpBB/includes/cron_tasks/standard/tidy_search.php
Normal file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tidy search cron task.
|
||||
*
|
||||
* Will only run when the currently selected search backend supports tidying.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class tidy_sessions_cron_task extends cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx, $config, $error;
|
||||
|
||||
// Select the search method
|
||||
$search_type = basename($config['search_type']);
|
||||
|
||||
include_once("{$phpbb_root_path}includes/search/$search_type.$phpEx");
|
||||
|
||||
// We do some additional checks in the module to ensure it can actually be utilised
|
||||
$error = false;
|
||||
$search = new $search_type($error);
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
$search->tidy();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*/
|
||||
public function is_runnable()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx, $config;
|
||||
|
||||
// Select the search method
|
||||
$search_type = basename($config['search_type']);
|
||||
|
||||
return file_exists($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
global $config;
|
||||
return $config['search_last_gc'] < time() - $config['search_gc'];
|
||||
}
|
||||
}
|
44
phpBB/includes/cron_tasks/standard/tidy_sessions.php
Normal file
44
phpBB/includes/cron_tasks/standard/tidy_sessions.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tidy sessions cron task.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class tidy_sessions_cron_task extends cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
global $user;
|
||||
$user->session_gc();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
global $config;
|
||||
return $config['session_last_gc'] < time() - $config['session_gc'];
|
||||
}
|
||||
}
|
56
phpBB/includes/cron_tasks/standard/tidy_warnings.php
Normal file
56
phpBB/includes/cron_tasks/standard/tidy_warnings.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* @package phpBB3
|
||||
* @version $Id$
|
||||
* @copyright (c) 2010 phpBB Group
|
||||
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @ignore
|
||||
*/
|
||||
if (!defined('IN_PHPBB'))
|
||||
{
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tidy warnings cron task.
|
||||
*
|
||||
* Will only run when warnings are configured to expire.
|
||||
*
|
||||
* @package phpBB3
|
||||
*/
|
||||
class tidy_warnings_cron_task extends cron_task_base
|
||||
{
|
||||
/**
|
||||
* Runs this cron task.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
global $phpbb_root_path, $phpEx;
|
||||
include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
|
||||
tidy_warnings();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task can run, given current board configuration.
|
||||
*/
|
||||
public function is_runnable()
|
||||
{
|
||||
global $config;
|
||||
return !!$config['warnings_expire_days'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this cron task should run now, because enough time
|
||||
* has passed since it was last run.
|
||||
*/
|
||||
public function should_run()
|
||||
{
|
||||
global $config;
|
||||
return $config['warnings_last_gc'] < time() - $config['warnings_gc'];
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user