后端配置中的magento cron

Bry*_*uiz 11 magento

所以我知道如何使用config.xml crontab设置一个cron:

<crontab>
    <jobs>
        <millena_export_send_all>
            <schedule><cron_expr>* * * * *</cron_expr></schedule>
            <run><model>millena_export/observer::exportOrderData</model></run>
        </millena_export_send_all>
    </jobs>
</crontab>
Run Code Online (Sandbox Code Playgroud)

但我感到困惑的是如何使cron_expr成为后端中可以更改的设置(每5分钟,每10分钟等).我想我可以使用backend_model然后在after_save方法中我可以做setStoreConfig('path/to/schedule/cron_expr','*/5****')或类似的东西,它将保存在缓存.我的想法是否正确?有一个更好的方法吗?

Lee*_*ite 24

更好的解决方案,不涉及自定义后端模型.

config.xml中

<?xml version="1.0"?>   
<config>
    <modules>
        <Company_Export>
            <version>0.1.0</version>
        </Company_Export>
    </modules>
    <global>
        <models>
            <company_export>
                <class>Company_Export_Model</class>
            </company_export>
        </models>
    </global>
    <default>
        <export>                
            <order>
                <cron_settings>*/5 * * * *</cron_settings>
            </order>
        </export>
    </default>
    <crontab>
        <jobs>                
            <company_export_send_order>
                <schedule>
                    <config_path>export/order/cron_settings</config_path>
                </schedule>
                <run>
                    <model>company_export/observer::exportOrderData</model>
                </run>
            </company_export_send_order>
        </jobs>
    </crontab>
</config>
Run Code Online (Sandbox Code Playgroud)

的system.xml

<?xml version="1.0"?>
<config>
    <tabs>
        <feedsconfig translate="label" module="export">
            <label>Feeds Configuration</label>
            <sort_order>99999</sort_order>
        </feedsconfig>
    </tabs>
    <sections>
        <export translate="label" module="export">
            <label>Export</label>
            <tab>feedsconfig</tab>
            <frontend_type>text</frontend_type>
            <sort_order>10000</sort_order>
            <show_in_default>1</show_in_default>
            <groups>
                <order translate="label">
                    <label>Order</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>2</sort_order>
                    <show_in_default>1</show_in_default>
                    <fields>
                         <cron_settings>
                            <label>How often do you want the cron to run?</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>40</sort_order>
                            <comment>Use Crontab Format (Eg. "*/5 * * * *" for every 5 minutes)</comment>
                            <show_in_default>1</show_in_default>
                        </cron_settings>
                    </fields>
                </order>
            </groups>
        </export>
    </sections>
</config>
Run Code Online (Sandbox Code Playgroud)

  • 为什么到目前为止这在官方的任何地方都没有记录! (4认同)
  • 并且,对于任何认为这必须是一种新语法的人来说,自1.1.1(大约2009年)以来就一直如此 (2认同)