拒绝在codeigniter中直接访问cronjob的cron文件的权限

时间:2014-10-01 07:19:58

标签: php codeigniter cron

我在codeigniter中设置了cronjob。 Cron工作正常,但我想限制直接访问cron url。

我尝试了下面的代码,但它没有用。

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

提前致谢。

1 个答案:

答案 0 :(得分: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