2014-10-01 100 views
0

我已經在codeigniter中設置了cronjob。克倫工作正常工作,但我想限制直接訪問cron網址。被拒絕直接訪問cron文件的權限在codeigniter中的cronjob

我試過下面的代碼,但它不工作。

if (isset($_SERVER['REMOTE_ADDR'])) die('Called from Browser'); 
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'] = '/cron/cron_alert'; // Setting the path of controller/method 
include(dirname(dirname(__FILE__)).'/index.php'); //Now just call the framework 

在此先感謝。

+0

爲什麼不嘗試使用某些api密鑰類型功能? – 2014-10-01 09:15:34

+0

你能舉個例子嗎?它的作品如何?因爲我沒有任何想法? – krutssss 2014-10-01 09:25:04

+0

示例something/index.php?api_key = SECRET_WORD。然後在你的頁面上檢查它是否包含這些詞,而不僅僅是優秀的腳本。 – 2014-10-01 09:34:57

回答

0

對於cron作業,您不包含/需要這樣的框架。

這裏是你應該做

成像,我們有一個cron控制器

class Cron extends CI_Controller { 
    public function __construct() { 
     parent::__construct(); 
     // All requests to this controller should come through CLI only. 
     if(! $this->input->is_cli_request()) { 
      die("Only CLI Requests Allowed"); 
     } 
    } 

    public function process_something ($param1, $param2) {  
     echo "Processing ..."; 
     sleep(2); 
     echo "Successfully Processed {$param1}, {$param2}"; 
    } 
} 

我們通過cron運行這一點,你必須做這樣的事情:

0 */2 * * * /usr/local/bin/php /path/to/index.php ControllerName Method Param1 Param2 

對於上面給出的例子,它應該看起來像這樣

0 */2 * * * /usr/local/bin/php /path/to/index.php cron process_something p1 p2