2013-08-30 40 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,所以這不是我的解決方案。 –