ci 외 게시판에 한번 적었는데 진행하다 재 오류가 발생해서 질문 드려요
지금 제가 할 작업은 cron 에서 select 및 insert를 작동 시키려고 합니다.
그래서 crontab에 /usr/local/bin/php /home/c10/www/index.php act_cron을 등록했습니다.
근데 여기서 문제점이 컨트롤러(act_cron.php)를 쉘에서 직접 실행해보니
public function index() {
echo "123";
$this->load->model('reg_m');
$this->reg_m->count_update_m();
$this->reg_m->cron_log_insert();
}
echo 123은 잘 찍혀나오는데 model이 call 되질 않네요..
혹시나해서 $CI =& get_instance();선언 후 $this를 $CI로 변경해도 같은 에러의 반복입니다
Call to a member function model() on a non-object in....
이런 에러가 나는데 혹시 crontab으로 컨트롤러의 function을 단독 실행이 불가능한건가요?
제가 놓치고 있는 부분이 있는지요??
********************************소스 추가 내용(act_cron.php)*************************************
<?php
require_once("/home/c10/www/class/DefineVar.class.php");
require_once("/home/c10/www/class/Func_lib.php");
require_once("/home/c10/www/class/Str_lib.php");
$_POST['cron'] = "1";
class Act_cron extends CI_Controller {
function __construct(){//제일먼저실행 초기화
$ac = explode("/",$_SERVER['PHP_SELF']);
if($ac[2] =="act_cron"){
parent::__construct();
$this->load->helper('url');
$this->load->database();
$this->load->library('pagination');
$this->load->library('pagination_custom');
$this->load->library('session');
$this->load->helper('download');
}
}
//문제부분
public function index()
{
echo "123";
$this->load->model('reg_count_m');
$this->reg_count_m->regulation_count_update_m();
$this->reg_count_m->cron_log_insert();
}
}
ㄴ 지금 테스트해봤는데 웹에서는 정상으로 동작하네요.. 왜 cron에만 저렇게 에러가 나오는 건지 ㅠㅠ
전체적인 소스를 보지 않고는 이유를 짐작하기 어렵네요...
cron이 아니라 쉘로도 실행해 보신건가요?
네 cron이 아닌 쉘로 실행했을 때 저런 에러가 나타나네요 ㅠㅠ
전체적인 소스라고 할게 없는게 위의 index 함수 외의 작업한 내용들은
단순하게 컨트롤러에서 공용으로 쓰는 것들 밖에 없습니다 ㅠㅠ
$this->load->model('reg_m');
이 부분 helper 밑에 한 번 넣어보세용~
쉘에서 실행하실 때 act_cron/index 까지 입력해주신거 맞죠?
$_POST, $_SERVER 이 변수는 웹 접속 했을 때만 사용 가능 한 변수 들인데, command line 에서 실행시 경고나 오류 없이 잘 되나요?
본문에 적어 놓으신 실행 문구로 실행하시면 생성자에서 if가 참이 되질 못합니다. 그러기 때문에 다른 라이브러리들이 로드되지 못하는 겁니다.
$ac를 print_r이나 var_dump로 찍어보시면 아실겁니다.
해당 컨트롤러를 cron에서만 동작하게 하실려면 $this->input->is_cli_request()로 CLI로 실행하는지 확인하신 후에 동작을 시키시면 됩니다.
한대승(불의회상) / 신기하게 $_POST 부분은 에러가 안나는데 $_SERVER 부분의 문제였네요
$_SERVER 부분 수정해보니 모델 부분에 진입했네요 감사합니다!