sioweb/oxid-cronjob

oxid 的 cronjob 入口点

安装数: 1,469

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 1

开放问题: 2

类型:oxidkernel-module

0.3.0 2020-03-19 13:58 UTC

This package is auto-updated.

Last update: 2024-08-29 01:04:12 UTC


README

本模块提供 Cronjob 的集中入口点。Oxid 6 的模块可以通过此模块在文件 metadata.phpcronjobs 下进行配置。这些必须从 $sMetadataVersion = "2.0" 开始以控制器的方式标记。

注意:必须在服务器或计算机上设置 Cronjob。然后,Cronjob 必须调用 URL https://yourdomain.tld?cl=swexeccrons

本模块适用于谁?

本模块是帮助模块开发人员提供定期调用的控制器。如果客户/用户使用多个包含定期调用控制器的模块,则只需在服务器上设置一个 Cronjob。

两种类型的 Cronjob

计划

计划中的 Cronjob 可以在后台 Service > Cronjob 下设置,并且比 Executables 动态得多。服务器或外部服务器的 Cronjob 现在可以每分钟调用一次商店: https://dein-shop.tld?cl=swshedulecrons

模块将加载来自 sio_cronjob 表的所有已设置的 Cronjob,这些 Cronjob 在调用时已过时,并执行这些 Cronjob。例如,我们想设置一个每五分钟执行一次的 Cronjob,在后台设置以下 Cronjob:

Cronjob ID: test
Minute: /5
Stunde: *
Tag: *
Monat: *
Wochentag: *

模块现在可以注册一个 test:: Cronjob

<?php

$aModule = [
    'cronjob' => [
        'test::ein_eindeutiger_name' => Name\Space\Zu\Deinem\Controller\ControllerKlassenName::class
    ]
];

可执行

在此模块的第一个版本中,Cronjob 只是一组可注册的类,这些类将按顺序调用和执行。这些 Cronjob 可以通过 URL ?cl=swexeccrons 在前端执行。所有按以下模式注册的 Cronjob 都将被执行

<?php

$aModule = [
    'cronjob' => [
        'ein_eindeutiger_name' => Name\Space\Zu\Deinem\Controller\ControllerKlassenName::class
    ]
];

注意:您的类必须至少包含公共函数 init() {},并且必须从 FontendController 继承或拥有所有用于前端输出的方法。

<?php

namespaceName\Space\Zu\Deinem\Controller;

use OxidEsales\Eshop\Application\Controller\FrontendController;

class ControllerKlassenName extends FrontendController {
  public function init() {
  }
}

警告:在大量数据的情况下,Cronjob 可能无法完全执行。

安装

安装通过 Composer 完成。可以手动安装,或通过在 composer.json 中指定模块的依赖项来安装

手动:composer req sioweb/oxid-cronjob

作为依赖项

{
  "name": "dein/modul",
  "require": {
    "sioweb/oxid-cronjob": "*"
  }
}

您的模块需要 Cronjob 吗?

那么将 sioweb/oxid-cronjob 添加为模块的 Composer 依赖项。您可以通过 Oxid 事件 onActivate 将您的 Cronjob 添加到 sio_cronjob 表中。**注意**:可能最终用户没有激活 Cronjob 模块,因此建议在您的 Event 中也安装 sio_cronjob 表。为此,请简单地复制来自 onActivate 方法 的 Cronjob 模块的内容。

提醒用户必须激活 Cronjob 模块,以便您的 Cronjob 执行。

最好将 Cronjob 命名如下:Modulname::Vendorname_Modulname_Cronjobname。Cronjob ID 必须为 Modulname,双冒号后面的名称是可选择的,但必须是唯一的。