2014-02-24 78 views
2

我爲我的項目使用CodeIgniter。我有我的這個障礙..CodeIgniter - 小時方法調用

在我的控制器中有這種方法,我想每小時打電話。讓我們有:

class Notifs extends CI_Controller { 

    public function __construct() { 
     parent:: __construct(); 
     // load stuff here 
    } 

    public function index() { 

    } 

    /* I want to call this function on an hourly basis */ 
    public function check_overdue_stuffs() { 
     // do the checking here 
    } 

} 

我絕對不知道如何實現這一點。我曾嘗試使用sleep($seconds),但那只是一團糟。

任何想法,一個完美的方法來做到這一點?一個詳細的例子會很棒。謝謝!

+6

定時任務是一個解決方案。 – Class

回答

3

這是非常直接的,但不要把它只留在你的PHP代碼。您需要使用cronjob腳本(linux)或Windows等效軟件(在您的軟件所在的服務器上)。

下面是一個簡單的cron你會增加拉特定的CLI方法:

# hourly cron 
0 * * * * php /www/ciWebsite/index.php [controller] [method] >/dev/null 2>&1 

這樣,它運行要控制器+方法和輸出轉儲到/dev/null

嘗試運行/www/ciWebsite/index.php notifs check_overdue_stuff看看它是否工作(顯然更新路徑)

編輯

  • 固定一個額外的條目(我不得不CLI =夾+ +控制器法)
+0

要考慮一件額外的事情。取決於您的服務器設置方式,如果執行'php'命令,由於其內部檢查,CI可能無法識別您來自命令行。在我的服務器上(godaddy),我用'php-cli'執行我的php cron作業來避免這些問題。 –