2010-02-18 45 views
15

我已經試過在過去下面的方法:如何通過CRON運行CodeIgniter文件?

<?php 
set_time_limit(0); 
$_SERVER['PATH_INFO'] = 'cron/controller/index'; 
$_SERVER['REQUEST_URI'] = 'cron/controller/index'; 
require_once('index.php'); 
?> 

,並把這個在笨的安裝目錄中的文件,稱這是cron.php,然後通過調用它:

php /home/[username]/public_html/my_project/cron.php 

如果我在我的瀏覽器中鍵入cron.php的URL,它可以很好地工作,但是無論何時通過CRON運行,我都會遇到404錯誤。投入笨

在獲得通過電子郵件發送給我下面的輸出結果的
function show_404($page = '') 
{ 
    print_r($_SERVER); 
    echo "\n\n"; 
    die ($page); 
} 

show_404()功能如下代碼:

Array 
(
    [SHELL] => /bin/sh 
    [MAILTO] => [email protected] 
    [USER] => [me] 
    [PATH] => /usr/bin:/bin 
    [PWD] => /home/[me] 
    [SHLVL] => 1 
    [HOME] => /home/[me] 
    [LOGNAME] => [me] 
    [_] => /usr/bin/php 
    [PHP_SELF] => 
    [REQUEST_TIME] => 1266479641 
    [argv] => Array 
     (
      [0] => /home/[me]/public_html/my_project/cron.php 
     ) 

    [argc] => 1 
    [PATH_INFO] => cron/controller/index 
    [REQUEST_URI] => cron/controllers/index 
) 


home/[me] 

在這裏,我[我]代替我的實際用戶名。

任何想法?

回答

21

通過CodeIgniter運行cron的最簡單方法是通過應用程序創建cron URL。

然後通過wget的

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

控制器內部調用它,那麼你可以使用日誌,以確保cron是不會運行過於頻繁,即如果谷歌機器人誤觸發。

的第二種方法是使用山貓

/usr/local/bin/lynx -source http://www.example.com/cron/run 
+0

以w獲取我需要的asteriks複製爲好?我應該複製整個命令嗎? – 2010-02-18 08:15:04

+0

太棒了,wget -O - -q -t 1 http://www.example.com/cron/run正常工作! – 2010-02-18 08:20:34

+0

星號與cron的運行時間有關。我*認爲*我引用的是每小時運行一次cron。 – 2010-02-18 09:08:36

2

有關於如何在命令行上運行笨維基文章,但是這是更有益的需要與通過終端的用戶交互的應用程序(也有一個庫)。這樣做在使用wget這樣的

http://codeigniter.com/wiki/CI_on_the_command_line/

一個好處是可以保護您的代碼被用戶或機器人與運行:

if(!empty($_SERVER['HTTP_HOST'])) 
{ 
    show_error('Shove off hax0r!'); 
} 
5

您可能還喜歡添加--spider忽略響應。這可阻止超時請求:

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

你可能也想看看這個:Cron job bootstrapper

這是你可以用它來直接從命令行運行你的CodeIgniter控制器一個簡單的引導程序文件。對於使用CI控制器進行cron作業,這是一個非常簡單和優雅的解決方案。它也支持日誌記錄。

0

使用PHP-CLI而不是PHP
例:

/usr/bin/php-cli /home/CPANEL_USER/public_html/index.php cronJobs deleteNotifications