我创建了一个自定义模块和一个自定义cron作业。这是我的代码:
<crontab>
<jobs>
<customer_cron_job>
<schedule>
<cron_expr>*/1 * * * *</cron_expr><!-- will be configurable from custom admin frontend-->
</schedule>
<run>
<model>globalconnector/observer::cronUpdates</model>
</run>
</customer_cron_job>
</jobs>
</crontab>
现在这个模块有一个自定义的管理员前端。在这里,我想为用户提供功能,以指定要运行的cron作业的时间(cron_expr)。即'cron_expr'将被动态设置。非常感谢任何帮助。
答案 0 :(得分:0)
<crontab>
<jobs>
<company_export_send_order>
<schedule>
<!-- Use the config path in your system.xml here -->
<config_path>globalconnector/general/cron_settings</config_path>
</schedule>
<run>
<model>globalconnector/observer::cronUpdates</model>
</run>
</company_export_send_order>
</jobs>
</crontab>
在模块的system.xml中,只需定义一个输入cron表达式的文本字段。
此处提供更多详细信息:magento cron in backend configuration
答案 1 :(得分:0)
我明白了....这就是我所做的。
从config.xml
中评论以下内容 <schedule>
<cron_expr>*/1 * * * *</cron_expr><!-- will be configurable from custom admin frontend-->
</schedule>
我为自定义adminmodule.phtml创建了一个块文件。此文件包含一个表单,用户提供各种参数,然后在同一页面上提交表单。
我创建了一个名为setCron($ cronData)的函数。从phtml:
调用此函数$this->setCron($_POST)
功能如下
function setCron($cronData){
$gcSwitch = new Mage_Core_Model_Config();
$cronExprString = '';
foreach ($cronData as $key => $value) {
$cronExprString = $cronExprString.' '.$value;
}
$cronExprString = ltrim($cronExprString);
$gcSwitch ->saveConfig('crontab/jobs/customer_cron_job/schedule/cron_expr', $cronExprString, 'default', 0);
}
这样做是为了更新数据库中的“core_config_data”表。有关更多证据,可以查看此表。此表包含以下列:
config_id(PK),scope,scope_id,path,value
我认为现在可以理解上面的setConfig()方法操作了。该表还包含“crontab / jobs / customer_cron_job / schedule / cron_expr”的条目。如果没有,则config.xml中存在一些问题。