수색…


cron에서 CodeIgniter 컨트롤러 호출하기

// application/controllers/Company_controller.php
<?php
if(!defined('BASEPATH'))
    exit('No direct script access allowed');

class Company_controller extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->model('companies_model');    
    }

// cron entry would be something like this:
// 1  1  *  *  *  /usr/bin/php [full path to]/index.php company_controller cronCLI AcmeCorp >/dev/null 2>&1
    public function cronCLI($firmName) {
        if(php_sapi_name() == 'cli') {
            $this->companies_model->doSomeDB_Process($firmName);
        } else {
            echo 'CLI only';
        }
    }
}

Codeigniter의 Cronjob

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Cron extends CI_Controller 
{
    /**
     * This is default constructor of the class
     */
    public function __construct()
    {
        parent::__construct();
        $this->load->library('input');
        $this->load->model('cron_model');
    }
    
    /**
     * This function is used to update the age of users automatically
     * This function is called by cron job once in a day at midnight 00:00
     */
    public function updateAge()
    {            
        // is_cli_request() is provided by default input library of codeigniter
        if($this->input->is_cli_request())
        {            
            $this->cron_model->updateAge();
        }
        else
        {
            echo "You dont have access";
        }
    }
}
?>

다음과 같이 cpanel / cron 관리자로부터 이것을 호출하십시오 (더 많은 호출 방법을 추가했습니다).

0 0 0 0 0 php-cli /home/your_site_user/public_html/index.php cron updateAge

또는

0 0 0 0 0 wget http://your_site_url/cron/updateAge

또는

0 0 0 0 0 /usr/bin/php /home/your_site_user/public_html/index.php cron updateAge

제 경우에는 wget이 plesk와 cpanel (루트 디렉토리에있는 서버에 파일을 만드는 것)에서 작업하고 있습니다. php-cli는 plesk 및 cpanel에서 작동합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow