0

我正在构建一个需要在购买完成后 1 周发送电子邮件的模块。如果客户端网站中没有启用 cron,如何做到这一点?

我在想两个解决方案: 1.用户下载扩展时,他还需要注册和写网站url。每周我都会在我的网站上运行 maincron.php。此脚本将检查所有网站的数据库,然后

foreach($websites as $website){
  file_get_contents($website['url'].'/myModuleController/cron'.)
}

2.我可以在模块的主控制器中输入代码来检查当前星期几是星期一上午。如果是,它将检查数据库是否已发送新电子邮件。如果否,则发送并保存上次运行的时间戳。对于每次访问,它将通过此​​代码,但只有在上述日期的第一次访问才会触发发送新电子邮件的运行。

你怎么看?哪个解决方案更好,还有其他方法吗?

4

2 回答 2

-1

Magento 允许您以类似于 UNIX crontab 样式的方式在 XML 配置中安排自定义任务。这是来自 app/code/core/Mage/CatalogRule/etc/config.xml 的示例:

<config>
...
    <crontab>
        <jobs>
            <catalogrule_apply_all>
                <schedule><cron_expr>0 1 * * *</cron_expr></schedule>
                <run><model>catalogrule/observer::dailyCatalogUpdate</model></run>
            </catalogrule_apply_all>
        </jobs>
...
    </crontab>
...
</config>

此示例将在每天上午 01:00 (0 1 * * *) 运行 Mage_CatalogRule_Model_Observer::dailyCatalogUpdate 方法。

您可以在自己的自定义模块中扩展此功能。要利用这一点,在模块的 config.xml 中添加以下内容:

<config>
...
    <crontab>
        <jobs>
            <namespace_module>
                <schedule>
                    <cron_expr>0,15,30,45 * * * *</cron_expr>
                </schedule>
                <run>
                    <model>module/model::method</model>
                </run>
            </namespace_module>
        </jobs>
    </crontab>
...
</config>

这将在一刻钟每 15 分钟运行一次。

要执行所有这些配置的任务,位于 Magento 根目录中的 cron.php 文件需要定期运行,例如每 15 分钟运行一次。基本上,这个脚本将检查它是否需要运行任何任务,以及是否需要安排任何未来的任务。

现在您可以根据您的要求发送计时器...

于 2013-08-30T13:08:19.347 回答
-1

您可以使用 magento 调度程序或通过邮件发送,创建调度程序文件,该文件设置在 CRON JOBS 部分下的服务器上。

于 2013-08-30T10:29:33.327 回答