2012-08-03 88 views
0

我有一個需要在我的網站上運行的cron作業。我已經建立了模型和控制器,然後將下面的cron作業每小時運行:Codeigniter cron作業問題

/usr/bin/php /path/to/directory/index.php cron resetViews; 

我有$配置在我的config.php文件的URI_PROTOCOL指標設置爲AUTO並沒有拼寫錯誤。

當我運行該命令時,我得到了我的主頁的4個html,這也是我的默認控制器。有任何想法嗎?

編輯

我已經改變了命令:

cd /path/to/directory; /usr/bin/php index.php cron resetViews; 

,現在我得到的我的首頁打印輸出的頂部以下錯誤:

PHP:解析第1行上的/home/crowston/public_html/2012/php.ini時出錯

這裏是我的整個php.ini文件:

error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 

我自己也嘗試用空的php.ini外商投資企業無濟於事。小號

回答

4

你可以試試這個:

php.ini文件已在整個網站的整體結構沒有造成錯誤

wget http://localhost/index.php/cron/resetViews 

基本上,因爲你必須使用wget將在能力絕對調用控制器方法,爲什麼使用cli?

編輯:

this,也許你應該做一個cd命令到該目錄,然後調用index.php文件。值得一試,因爲如果ci試圖從相對於cron的pwd的路徑加載控制器,那麼它可能會拋出404。

+1

因爲我可以使用$ this-> input-> is_cli_request()來停止web用戶運行的cron。此命令是否被阻止?我認爲它會 – 2012-08-03 10:19:16

+0

你可以使用一個關鍵參數的cron作業方法,並檢查它是否匹配之前處理作業,否則返回。您甚至可以通過將其放置在配置文件中來使密鑰可配置。在php代碼生成器中的電子郵件隊列代理代碼中使用了相同的技術。 – Nish 2012-08-03 10:37:00

+0

@goldenparrot請參閱我的編輯:) – 2012-08-03 11:35:42