如何在 Magento 2 中通过管理员动态设置 cron
How to setup cron dynamically via admin in Magento 2
如何在 Magento 2 的 config.xml(自定义模块)中动态设置 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>
我会尝试提出一个建议,但不确定它是否完全回答了你的问题。
因此 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 作业。
一种可以真正完成您想要的工作,另一种可以调整它的时间表。
您还可以根据需要使用上面的代码在观察者、插件或其他一些 class 中动态调整它的时间表。
如何在 Magento 2 的 config.xml(自定义模块)中动态设置 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>
我会尝试提出一个建议,但不确定它是否完全回答了你的问题。
因此 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 作业。 一种可以真正完成您想要的工作,另一种可以调整它的时间表。 您还可以根据需要使用上面的代码在观察者、插件或其他一些 class 中动态调整它的时间表。