我正在构建一个模块,需要在购买完成后一周发送电子邮件。如果在客户端网站中没有启用cron,如何进行此操作?
我在考虑两种解决方案: 1。 当用户下载扩展时,他还需要注册和编写网站URL。每周我都会在我的网站上运行maincron.php。此脚本将在数据库中检入所有网站,然后
foreach($websites as $website){
file_get_contents($website['url'].'/myModuleController/cron'.)
}
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分钟运行一次。基本上,此脚本将检查是否需要运行任何任务,以及是否需要安排任何将来的任务。
现在你可以根据你发送计时器......