제목 | 메모리부족에러 출력으로 인해 문제되는 부분을 찾는 중 특이한 부분을 찾게 되었습니다. | ||
---|---|---|---|
카테고리 | 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);
위와 같이 호출해야 합니다.