sioweb / oxid-cronjob
oxid 的 cronjob 入口点
Requires
README
本模块提供 Cronjob 的集中入口点。Oxid 6 的模块可以通过此模块在文件 metadata.php
的 cronjobs
下进行配置。这些必须从 $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
,双冒号后面的名称是可选择的,但必须是唯一的。