Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
545 views
in Technique[技术] by (71.8m points)

magento cron in backend configuration

So I know how to setup a cron using the config.xml crontab stuff:

<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>

But what I am confused about is how to make that cron_expr a setting in the backend that can be changed (every 5 minutes, every 10 minutes, etc). I am thinking I can use a backend_model and then in an after_save method I can do setStoreConfig('path/to/schedule/cron_expr', '*/5 * * * *') or something to that sort and it will save in the cache. Is my thinking correct? Is there a better way to do this?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

A better solution that doesn't involve a custom backend model.

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>

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>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...