개발 Q&A

제목 get_dir_file_info로 파일을 불러올 때의 문제...
카테고리 PHP
글쓴이 madman 작성시각 2017/04/11 16:38:55
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 11418   RSS

get_dir_file_info function을 이용해 서버에 업로드 되어있는 mp3파일을 불러온 뒤에 foreach로 돌려 목록으로 뿌려주는 페이지가 있습니다. 특정 섹션에 대한 문제가 각 15개씩 있고, 그 문제에 대한 학생의 녹음파일을 불러오는건데요.  (조건은 그러니까 섹션코드/학생코드/파일갯수입니다. 파일갯수는 15개)

문제는 서버에 올라가있는 파일이 무려 총 90만개가 넘습니다. 용량만 85GB... 

get_dir_file_info로 불러오는 파일갯수가 그렇다보니 foreach 루프를 돌릴때 500 에러가 떨어지는건데.. 좋은 방법이 없을까요? file_exists를 통해 파일 유무를 검사하려해도 애초부터 파일이 많다보니.. 좋은 방법이 없을까요? 고민이 크네요.. 

 

 

 

 

$noList = $this->model->SpkList(array('A.SET' => (int)$set)); //model을 통해 목록을 불러옵니다. 회당 총 15개입니다. 
$dir = get_dir_file_info(/path/directory); // 샘플 디렉토리입니다. 
$number = 16;

foreach($noList as $no)
{
   $data = array('no' => $number++, 'eng' => $no['ENG'], 'file' => null);

   foreach($dir as $var)  
   {
      $regExp = "/^{$set}.*.{$no['NO']}.mp3$/";

       if(preg_match($regExp, $var['name']))
       {
          $data['file'] = $var['relative_path'].$var['name'];
       }
   }
}

 

 다음글 location.href 관련 질문.. (1)
 이전글 php 오류 문제인데 이런 에러는 처음봐서 도움 요청합... (1)

댓글

변종원(웅파) / 2017/04/11 17:23:14 / 추천 1

애초에 디렉토리를 나누지 않은 것이 문제가 됐네요.

프로그램 말고 콘솔에서 파일 리스트를 읽어서 db화 하고 그 db를 기준으로 파일을 가져와서 출력하도록 하셔야 할 것 같네요.

꼭 프로그램으로 해야한다면 php.ini에서 타임아웃과 메모리 사용량 제한을 없애고 해보세요.

(cpu, memory 둘다 full 되면 서버 죽을 수도 있습니다)

madman / 2017/04/12 12:58:38 / 추천 0
답변 감사합니다.