CI 묻고 답하기

제목 cron 작업 중 에러 질문..(소스추가)
글쓴이 무엉 작성시각 2016/03/11 14:18:51
댓글 : 12 추천 : 0 스크랩 : 1 조회수 : 13500   RSS

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();
		
	}
}

 

 다음글 파일 업로드 문의 (5)
 이전글 CI로 restful 역할을 만드는게 효율적일까요? (3)

댓글

taegon / 2016/03/11 16:01:06 / 추천 0
실행 가능합니다. 현재 상태로 웹에서 호출해 보시고 동일한 오류라면 컨트롤러를 잘못 생성하신 겁니다.
무엉 / 2016/03/11 16:16:24 / 추천 0

ㄴ 지금 테스트해봤는데 웹에서는 정상으로 동작하네요.. 왜 cron에만 저렇게 에러가 나오는 건지 ㅠㅠ

taegon / 2016/03/12 13:30:02 / 추천 0

전체적인 소스를 보지 않고는 이유를 짐작하기 어렵네요...

cron이 아니라 쉘로도 실행해 보신건가요? 

무엉 / 2016/03/14 08:55:58 / 추천 0

네 cron이 아닌 쉘로 실행했을 때 저런 에러가 나타나네요 ㅠㅠ

전체적인 소스라고 할게 없는게 위의 index 함수 외의 작업한 내용들은

단순하게 컨트롤러에서 공용으로 쓰는 것들 밖에 없습니다 ㅠㅠ

변종원(웅파) / 2016/03/14 09:28:33 / 추천 0
무엉/ 관련 소스를 올리셔야 해결이 되겠네요.
무엉 / 2016/03/14 10:11:39 / 추천 0
ㄴ 내용추가했습니다!
Luj / 2016/03/14 11:26:33 / 추천 0

$this->load->model('reg_m');

이 부분 helper 밑에 한 번 넣어보세용~

쉘에서 실행하실 때 act_cron/index 까지 입력해주신거 맞죠?

한대승(불의회상) / 2016/03/14 12:27:14 / 추천 0

$_POST, $_SERVER 이 변수는 웹 접속 했을 때만 사용 가능 한 변수 들인데, command line 에서 실행시 경고나 오류 없이 잘 되나요?

taegon / 2016/03/14 12:56:54 / 추천 0

본문에 적어 놓으신 실행 문구로 실행하시면 생성자에서 if가 참이 되질 못합니다. 그러기 때문에 다른 라이브러리들이 로드되지 못하는 겁니다.

$ac를 print_r이나 var_dump로 찍어보시면 아실겁니다.

해당 컨트롤러를 cron에서만 동작하게 하실려면 $this->input->is_cli_request()로 CLI로 실행하는지 확인하신 후에 동작을 시키시면 됩니다.

무엉 / 2016/03/14 13:28:56 / 추천 0
Luj/ 네 정상 입력했는데 오류가 나서 확인해 보니 $_SERVER 문제가...ㅎㅎ
무엉 / 2016/03/14 13:31:36 / 추천 0

한대승(불의회상) / 신기하게 $_POST 부분은 에러가 안나는데 $_SERVER 부분의 문제였네요

$_SERVER 부분 수정해보니 모델 부분에 진입했네요 감사합니다!

무엉 / 2016/03/14 13:33:00 / 추천 0
taegon / 말씀대로 바로 윗단 $_SERVER의 접속이 불가해서 if문 로드를 못했었습니다! 감사합니다~