2010-06-01 233 views
1

我試圖讓我的本地主機上每5分鐘運行一個cron作業。使用Cronnix應用程序,我輸入了以下命令在本地主機上運行CodeIgniter cron

0,5 * * * * root curl http://localhost:8888/site/ > /dev/null 

腳本運行正常,當我在我的瀏覽器訪問http://localhost:8888/site/。我讀過一些關於讓CI在Cron上運行的東西,使用wget和其他各種選項,但沒有一個很合理。

在另一個SO文章中,我發現下面的命令

wget -O - -q -t 1 http://www.example.com/cron/run 

什麼是 「-O - -q -t 1」 的語法是什麼呢?

還有其他選擇嗎?

+0

BTW 0.5 * * * *將在每小時00:和05運行。如果你想每5分鐘一次,那麼*/5 * * * *就是你想要的。 – Iraklis 2010-06-01 13:21:18

回答

0

我意識到這是對Drupal的引用,但是他們在解釋wget調用中的每個參數都做了很好的工作。

Drupal Cron Explanation

如果你想更通用的解釋,你可以找到它here

+0

鏈接說明: 0 * * * * wget -O - -q -t 1 http://www.example.com/cron.php 在上面的示例中,0 * * * *代表任務應該發生。第一個數字表示分鐘數 - 在這種情況下,表示分鐘數或小時數。(例如,如果數字是10,那麼該動作將在每小時10分鐘後進行。)其他數字分別表示一週中的小時,日,月和日。 A *是通配符,意思是「每次」。 但是沒有提及-O - -q -t 1的含義? – stef 2010-06-01 11:01:36

4

-O -意味着輸出轉到標準輸出(-O/dev/null)會使輸出無效。 -q意味着安靜(不要打印出任何進度條),這會弄亂任何日誌文件的外觀。 -t 1表示只嘗試一次。如果連接失敗或超時,則不會再嘗試。

有關wget命令的完整手冊,請參閱http://linux.die.net/man/1/wget

編輯:剛纔意識到你將所有這些管道都設置爲/ dev/null,你可以省略-O參數或者指向/ dev/null並省略最後一個管道。

1

我總是在cli模式下使用PHP。對我來說似乎更有效率。

第一設置像一個cron項:

*/5 * * * * /usr/bin/php /var/www/html/cronnedscript.php 

cronnedscript.php應放置在您的根WWW文件夾。

然後編輯cronnedscript.php有:

<?php 
$_GET["/mycontroller/index"] = null; 
require "index.php"; 
?> 

其中mycrontroller是你想火CI控制器。

,如果你想控制器只能由crond的運行,通過公共WWW請求反對,以下行添加到控制器和cronnedscript.php:

if (isset($_SERVER['REMOTE_ADDR'])) die('Permission denied'); 
相關問題