CI 묻고 답하기

제목 대용량 파일 다운로드 질문입니다...
글쓴이 셉셉이 작성시각 2016/02/11 15:16:09
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 19469   RSS

안녕하세요

현재 서버에 저장된 파일을 다운로드 하는것을 구현중인데

1기가 넘어가는 파일은 뻑이나거나 메모리 에러가 뜨면서 안되네요 ...

컨트롤러 단에

<?php

class Download extends CI_Controller {
    function __construct()
    {
        parent::__construct();
        $this->load->helper('download');
         
              
    }         
    

     function down_1()
    {
        
        $data = file_get_contents(FCPATH . "data/PXD000750/PancMet_IG_b15.raw"); 
        $name = 'PancMet_IG_b15.raw';
 
        force_download($name, $data);
    }
     function down_2()
    {
        
        $data = file_get_contents(FCPATH . "data/PXD000750/PancMet_IG_b22.raw"); 
        $name = 'PancMet_IG_b22.raw';
 
        force_download($name, $data);
    }
     function down_3()
    {
        
        $data = file_get_contents(FCPATH . "data/PXD000750/PancMet_IG_b23.raw"); 
        $name = 'PancMet_IG_b23.raw';
 
        force_download($name, $data);
    }

 

이런식으로 다운로드 헬퍼를 사용하여 구현하고 view 단에서 각각의 함수를 링크로 불러오는식으로 처리중인데

1기가 넘는 파일은 어떻게 해야 하는지 모르겠네요 ㅠㅠ

Message: Allowed memory size of 536870912 bytes exhausted (tried to allocate 1156371933 bytes)

 

이런식으로 메세지 뜨고.. 그래서 임시방편으로 php.ini 에서 메모리를 2048까지 늘렸봤더니

에러는 안뜨지만 그냥 뻑나버리네요 ...

 

흠 이걸 어떻게 해야하는지 답변좀 부탁드리겠습니다 ㅠㅠ

 

 다음글 크롬, ie 를 두개의 브라우저를 열면 응답이 없습니다... (3)
 이전글 CI에서 페이스북으로 로그인을 구현하려고 하는데요 (1)

댓글

한대승(불의회상) / 2016/02/11 15:44:25 / 추천 0

다운로드 헬퍼 사용시 메모리에 파일을 올린 후 다운로드 하기 때문에 1기가 정도 되는 파일은 다운로드 헬퍼를 사용하지 않는게 좋습니다.

파일을 직접 링크를 걸어주시거나 PHP에서 다운로드 권한을 제어 해야 한다면 fpassthru() 라는 함수를 사용 하십시오.

아래 URL 참조 하셔서 구현 하세요.

http://php.net/manual/en/function.fpassthru.php

파일이 1기가 정도 된다면 php 실행 시간도 고려 하셔야 합니다.

fnmeat / 2016/02/12 17:23:50 / 추천 0

pear 의 http/download2 패키지 참조하시면 될 듯 합니다.

http://pear.php.net/package/HTTP_Download2/

라우러 / 2019/06/29 09:16:11 / 추천 0
음 제가 잘 몰라서 그러는데 fpassthru 함수는 파일 내용을 전부다 읽어오기 때문에 메모리 여부에 따라 크게 영향을 받지 않나요?