如何在magento 2中的config.xml(自定义模块)中动态设置cron
我会尝试提出一个命题,不确定它是否完全回答了你的问题 .
因此config.xml正在为system.xml中设置的配置字段设置默认值
因此,您可以拥有另一个每分钟运行的cron作业(* * * * *)并动态更改system.xml中设置的值 . 像这样的东西:
public function __construct( \Magento\Framework\App\Config\ConfigResource\ConfigInterface $resourceConfig) { $this->resourceConfig = $resourceConfig; } public function execute() { $newvalue = $dynamicvalue; $this->resourceConfig->saveConfig( 'section/group/field', $newvalue, \Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT, \Magento\Store\Model\Store::DEFAULT_STORE_ID ); }
所以基本上是两个cron工作 . 一个实际上完成你想要的工作,一个调整它的工作安排 . 您还可以使用上面的代码根据您的需要在观察者,插件或其他类中动态调整其计划 .
Magento2有一个不同的方案来合并布局配置,因此您必须在your_custom_module / etc文件夹下创建一个名为crontab.xml的新文件 . 然后你可以像这样添加你的cron配置:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd"> <group id="default"> <job name="custom_cronjob" instance="YourVenDoerName\CustomModule\Cron\Test" method="execute"> <schedule>* * * * *</schedule> </job> </group> </config>
干杯
2 回答
我会尝试提出一个命题,不确定它是否完全回答了你的问题 .
因此config.xml正在为system.xml中设置的配置字段设置默认值
因此,您可以拥有另一个每分钟运行的cron作业(* * * * *)并动态更改system.xml中设置的值 . 像这样的东西:
所以基本上是两个cron工作 . 一个实际上完成你想要的工作,一个调整它的工作安排 . 您还可以使用上面的代码根据您的需要在观察者,插件或其他类中动态调整其计划 .
Magento2有一个不同的方案来合并布局配置,因此您必须在your_custom_module / etc文件夹下创建一个名为crontab.xml的新文件 . 然后你可以像这样添加你的cron配置:
干杯