首页 文章

如何通过magento 2中的管理员动态设置cron(自定义模块)

提问于
浏览
0

如何在magento 2中的config.xml(自定义模块)中动态设置cron

2 回答

  • 0

    我会尝试提出一个命题,不确定它是否完全回答了你的问题 .

    因此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工作 . 一个实际上完成你想要的工作,一个调整它的工作安排 . 您还可以使用上面的代码根据您的需要在观察者,插件或其他类中动态调整其计划 .

  • 0

    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>
    

    干杯

相关问题