| 제목 | 메모리부족에러 출력으로 인해 문제되는 부분을 찾는 중 특이한 부분을 찾게 되었습니다. | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 정수리 | 작성시각 | 2016/10/04 14:18:47 | 
|  | |||
| 이전에 메모리부족에러 출력으로 글을 올렸었습니다. 여러 포럼선배분들께서 답글을 올려주셔서 감사합니다. 문제되는 부분을 찾고자 확인 하던중 특이점을 발견하여 글을 올리게되었습니다. 
 
function pg_dm_modify(){
			$this->output->enable_profiler(TRUE);
			$data = array();
			foreach($this->input->post(null, true) as $key => $val) $data["{$key}"]= $val;
			var_dump($data);
			
			$result = $this->pg_dm_modify($data);
/*
				if($result){
					
					echo "
					<meta http-equiv='Content-type' content='text/html; charset=utf-8'>
					<script>alert('수정되었습니다');
					window.opener.parent.location.reload();
						window.close();
					</script>";
		
				}
	*/			
				clearstatcache();
			
	}$result부분을 주석처리 하였을 경우 폼으로 데이터를 넘거미녀 var_dump($data)를 통해 넘어온 데이터들이 확인 됩니다. 
 $result의 주석부분을 삭제한 후 실행하면 메모리가 부족하다는 에러가 뜨더라구요 
 
function pg_dm_modify($data){
/*
			var_dump($data);
		if(array_key_exists('Texcept',$data)){
			
			  $sql = 'update jds_telmemo set Tdate = ?, Ttime = ?, Tuser =?, Tdept = ?, Tname = ?, Tphone = ?, Tmemo_a = ?, Tmemo_b=?, TetcPG = ?, Tresult = ?, Treason = ?, Tdamdang =?, pg_pk = ?, Ttype = ?, Twrite_a = ?, Twrite = ?, Trctype = ?, TPG = ?, Texcept = ? where Tno =?';
					$result =  $this->db->query($sql, array($data['Tdate'], $data['Ttime'], $data['Tuser'],  $data['Tdept'], $data['Tname'], $data['Tphone'], $data['Tmemo_a'], $data['Tmemo_b'], $data['TetcPG'], $data['Tresult'], $data['Treason'], $data['Tdamdang'], $data['pg_pk'], $data['Ttype'], $data['Twrite_a'], $data['Twrite'], $data['Trctype'], $data['TPG'], $data['Texcept'], $data['Tno']));
			}else{
				
		       $sql = 'update jds_telmemo set Tdate = ?, Ttime = ?, Tuser =?,  Tcom = ?, Tdept = ?, Tname = ?, Tphone = ?, Tmemo_a = ?, Tmemo_b=?, TetcPG = ?, Tresult = ?, Treason = ?, Tdamdang =?, pg_pk = ?, Ttype = ?, Twrite_a = ?, Twrite = ?, Trctype = ?, TPG = ?, Texcept = "" where Tno =?';	
						
					$result =  $this->db->query($sql, array($data['Tdate'], $data['Ttime'], $data['Tuser'], $data['Tcom'], $data['Tdept'], $data['Tname'], $data['Tphone'], $data['Tmemo_a'], $data['Tmemo_b'], $data['TetcPG'], $data['Tresult'], $data['Treason'], $data['Tdamdang'], $data['pg_pk'], $data['Ttype'], $data['Twrite_a'], $data['Twrite'], $data['Trctype'], $data['TPG'], $data['Tno']));
			}
		 return $result;
*/
	}위의 코드의 경우 컨트롤러에서 데이터를 보낸 데이터를 받는 모델부분입니다. 모델 함수의 안의 if문을 전체를 주석처리 한후 var_dump($data)를통해 넘어온 데이터값을 확인해 보았습니다. 그런데 특이한게 화면에는 var_dump를 통해 데이터값이 확인은 되는데 이 데이터의 경우 하나의 리스트의 데이터만 넘어오는데 화면에 출력되는 데이터의 경우 동일한 값들이 계속 증가하는 것입니다;; 마치 무한 while이 도는것 처럼;; 그렇다보니 이부분이 문제가 되는것 같은데 무엇때문에 이렇게 화면에 확인되는 데이터값이 계속해서 늘어날까요;; | |||
| 다음글 | 회원가입 시 패스워드의 경우 어떻게 저장하시나요? (6) | ||
| 이전글 | CI 4 모델 로드하기 (2) | ||
| 
                                이제다시
                                /
                                2016/10/04 14:34:57 /
                                추천
                                0
                             | 
| 
                                정수리
                                /
                                2016/10/04 15:04:26 /
                                추천
                                0
                             @이제다시 !!해결하였습니다; 왜 중간에 모델명을 빼먹었지 ㅜㅜ 덕분에 해결하였습니다 담부터 좀더 신중해야 겟네요 | 
function 안에 자신을 호출하면 재귀함수가 되서 특별히 break 하지 않는 이상 빠져 나올 수 없다고 생각드내요.
controller 의 함수 이름과 model 의 함수 이름이 같으면
$this->모델명->pg_dm_modify($data);
위와 같이 호출해야 합니다.