mwstake/mediawiki-component-runjobstrigger

提供基于 MediaWiki 的 `maintenance/runJobs.php` 的后台任务基础设施

2.0.3 2024-08-22 05:54 UTC

This package is auto-updated.

Last update: 2024-09-22 05:56:58 UTC


README

MediaWiki 的 RunJobsTrigger

提供基于 MediaWiki 的 maintenance/runJobs.php 的后台任务执行基础设施。

此代码旨在在 MediaWiki 框架中使用。请勿在 MediaWiki 之外尝试使用它。

先决条件

必须通过服务器端进程(例如,在 Linux 上的 cronjob 或 Windows 上的计划任务)定期运行 MediaWiki 的 maintenance/runJobs.php 脚本

该任务的频率决定了处理器可以调用的最小频率。建议至少每 15 分钟调用一次 maintenance/runJobs.php

在 MediaWiki 扩展中使用

"mwstake/mediawiki-component-runjobstrigger": "~2.0" 添加到您的 composer.json 文件的 require 部分。

从 2.0 版本开始,需要显式初始化。可以通过以下方式实现:

  • 或者将 "callback": "mwsInitComponents" 添加到您的 extension.json/skin.json
  • 或者调用 mwsInitComponents(); 在您扩展/skins自定义 callback 方法中

另请参阅 mwstake/mediawiki-componentloader

实现处理器

创建一个实现 MWStake\MediaWiki\Component\RunJobsTrigger\IHandler 的类。为了方便,您可能希望实现抽象基类 MWStake\MediaWiki\Component\RunJobsTrigger\Handler 的子类。

getInterval 方法中,您可以返回任何实现 MWStake\MediaWiki\Component\RunJobsTrigger\Interval 的对象。有一些预定义的间隔可用

  • MWStake\MediaWiki\Component\RunJobsTrigger\Interval\OnceADay
  • MWStake\MediaWiki\Component\RunJobsTrigger\Interval\OnceAWeek
  • MWStake\MediaWiki\Component\RunJobsTrigger\Interval\OnceEveryHour
  • MWStake\MediaWiki\Component\RunJobsTrigger\Interval\TwiceADay

注册处理器

有两种方式可以注册处理器

  1. 使用 mwsgRunJobsTriggerHandlerRegistry GlobalVars 配置
  2. 使用钩子 MWStakeRunJobsTriggerRegisterHandlers

在两种情况下,都必须提供 ObjectFactory 规范

示例 1: GlobalVars

$GLOBALS['mwsgRunJobsTriggerHandlerRegistry']['my-own-handler'] = [
    'class' => '\\MediaWiki\Extension\\MyExt\\MyHandler',
    'services' => [ 'MainConfig' ]
];

示例 2: Hookhandler

$GLOBALS['wgHooks']['MWStakeRunJobsTriggerRegisterHandlers'][] = function( &$handlers ) {
    $handlers["my-own-handler"] = [
        'class' => '\\MediaWiki\Extension\\MyExt\\MyHandler',
        'services' => [ 'MainConfig' ]
    ];
    return true;
};

配置

  • mwsgRunJobsTriggerRunnerWorkingDir: 在执行过程中存储数据的位置。默认为操作系统的临时目录。
  • mwsgRunJobsTriggerOptions: 特定处理器的定时选项。
  • mwsgRunJobsTriggerHandlerRegistry: 添加您自己的触发处理器。

配置示例

使用 MediaWiki 的临时目录在执行过程中存储数据

假设管理员希望确保任何临时文件都创建在 MediaWiki 的临时目录中而不是其他地方。他们可以通过将以下内容添加到他们的 LocalSettings.php 来做到这一点

$GLOBALS['mwsgRunJobsTriggerRunnerWorkingDir'] = $wgTmpDirectory;

更改定时选项

维基管理员可以在他们的 LocalSettings.php 中添加以下内容,以便将 OnceAWeek 任务在星期五而不是星期日(默认)运行

$GLOBALS['mwsgRunJobsTriggerOptions']['*']['once-a-week-day'] = 'friday';

调试

可以通过添加以下内容来启用调试日志:

$GLOBALS['wgDebugLogGroups']['runjobs-trigger-runner'] = "/tmp/runjobs-trigger-runner.log";

到您的 LocalSettings.php 文件