drupal 寫定時任務
首先,不得不承認:drupal是一個獨特的框架,我對於裏面有太多的東西都不瞭解。這次寫cron,花了我整整一天的時間。寫下我的過程,以防止下次再出現同樣的錯誤~
drupal的cron,也許和大多數的php定時任務是相同的,也許不同。我也說不出特定的什麼來~值得強調的是:drupa對於hook的運用,幾乎發揮到了極致,只要是drupal,都不能夠拋開這一個去思考問題~
同樣的,對於cron,本質上也是調用hook_cron。
促使我去寫cron的原因是:我安裝了event,signup模塊,用來創建和註冊活動。測試的時候,我發現了一個問題,即:當一個用戶註冊事件之後,會發送一封“confirmed email”給註冊的用戶,我同樣設置了在活動開始的前一天,給用戶發送一封“reminder email”。但是我發現,系統並不會給用戶發送這樣的一封提醒郵件。於是查找原因,我發現,當網站“run
cron”的時候,用戶會收到郵件。
我問我同事,同事告訴我,讓系統一直運行cron,是不對的。但是我又找不到其他可以讓系統發送提醒郵件的辦法。於是想,我只運行提醒郵件的cron。
我找到寫提醒郵件的方法的php文件,即sites/all/modules/third/signup/includes/cron.inc文件。
於是我寫cron如下:
* * * * * php -f /home/example_path/sites/all/modules/third/signup/includes/cron.inc
不運行
我查了網上的一些資料,有的人,寫的形式如下:
* * * * * /usr/local/bin/php /home/example_path/sites/all/modules/third/signup/includes/cron.inc
即:把php -f 修改爲/usr/local/bin/php ,這裏“/usr/local/bin”是php環境的安裝路徑
不運行
我記得上次和一個同事,寫cron的時候,也不運行,於是,謝了url鏈接,去運行cron
我繼續寫了cron如下:
* * * * * /usr/bin/curl http://example/admin/reports/status/run-cron
“admin/reports/status/run-cron“ 是我在管理員登錄狀態下,查找到的路徑
不運行
我到google裏搜關鍵字: drupal cron
發現是要運行drupal的cron.php文件
於是修改如下:
* * * * * /usr/bin/curl http://example/cron.php
運行啦
但是我總是覺得寫鏈接不是很好,於是修改如下:
* * * * * /usr/local/bin/php /home/example_path/cron.php
不運行
我就鬱悶了,怎麼回事 ,我事後想了下,可能是php安裝路徑寫錯了
繼續修改如下:
* * * * * php -f /home/example_path/cron.php
運行啦
一路走下來,真是不容易啊~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.