Magento在1周后发送电子邮件

时间:2013-08-30 10:27:29

标签: php magento email cron

我正在构建一个模块,需要在购买完成后一周发送电子邮件。如果在客户端网站中没有启用cron,如何进行此操作?

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

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

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

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

2 个答案:

答案 0 :(得分:-1)

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

答案 1 :(得分:-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分钟运行一次。基本上,此脚本将检查是否需要运行任何任务,以及是否需要安排任何将来的任务。

现在你可以根据你发送计时器......