2013-08-30 37 views
0

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

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

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

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

您对此有何看法?哪种解决方案更好,是否有其他方法?

回答

-1

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

+0

你读过我写的吗?如果在客户端网站中没有启用cron,该如何做到这一点?并不是所有的人都知道如何做到这一点,也不是所有人都知道如何去做。 Magento调度程序也需要启用cron。或者我错了还是错过了什么? –

+0

先生,在CPANEL中可用的CRON Jobs,在那里你可以根据你的时间设置文件。 和文件根据您设定的时间发送邮件。 –

+0

这将成为其他客户端的一个模块,并不是所有人都知道如何设置cron作业,而不是所有人都拥有cPanel。在我的情况下克伦不是解决方案。 –

-1

Magento允许您以类似于UNIX crontab样式的方式在XML配置中安排自定义任务。下面是一个例子应用程序/代码/核心/法师/ 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运行Mage_CatalogRule_Model_Observer :: dailyCatalogUpdate方法(0 1 * * *) 。

您可以在您自己的自定义模块中扩展此功能。为了利用这一点,你的模块的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分钟运行一次。基本上,该脚本将检查是否需要运行任何任务,以及是否需要安排将来的任务。

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

+0

如果cron未启用,这将不起作用!由于并非所有使用此模块的客户都启用cron或访问cpanel,所以这不是我的解决方案。 –