대용량 파일 다운로드시 문제점 수정 > 그누3 팁자료실

그누3 팁자료실

대용량 파일 다운로드시 문제점 수정 정보

그누호환 대용량 파일 다운로드시 문제점 수정

첨부파일

download.php (6.1K) 127회 다운로드 2004-10-05 03:12:30

본문

그냥 문제점이라기 보단 그누보드의 구조상의 어쩔수 없는 현상같습니다.

이 문제점을 해결하려고 많이 노력했고 같은 현상이 있는분이 있을거같네요.

그누보드는 모든 파일에 아래의 구조가 포함되게 되어있습니다.
ob_start();
include $doc;
$ob_content = ob_get_contents();
ob_end_clean();
출력물을 버퍼에 넣는거죠.
하지만 다운로드할 용량이 늘어날수록 버퍼에 넣어야 할 양은 늘어납니다.
PHP가 CPU를 엄청 잡아먹게 되죠. 다운로드 용량이 100M 정도되면 제경우엔 서버가 다운됬습니다.

이 문제점을 수정한 내용입니다.
첨부파일을 받으시고 bbs/download.php 로 저장해주세요.
bbs/gbview.php 를 열어서 아래와 같이 수정합니다.
------------------수정전-----------
            $file[$i][href] = "./?doc=bbs/gbdownload.php&$qstr&wr_id=$wr_id&index=$i";
------------------수정후-----------
            $file[$i][href] = "./bbs/download.php?$qstr&wr_id=$wr_id&index=$i";

수정하시면 큰 파일을 받더라도 바로 다운로드창이 나오시는걸 볼 수 있습니다.

#1--세션경로 수정
추천
0
  • 복사

댓글 전체

세션 수정하시니 잘되네요..^^;
한가지만 더 부탁드리면요 현재 아쿠아엠프를 홈페서 사용중입니다. 다운로드를 클릭하는 순간
엠프가 정지되어 버립니다. 음악이 계속 나오면서 다운받는 방법은 없을까요?
이거 설치하고 다운로드가 안됩니다..
경로가 맞나 확인 좀 부탁드립니다.
그누보드를 bbs 디렉토리에 설치했습니다. 그러면
./bbs/bbs/ 폴더에 download.php 파일을 넣는게 맞는거죠??
이방법도 있으니 참고하세요.
download.php 에서
---------------수정전
$fp = fopen($filepath, "rb");
        if (!fpassthru($fp)) {
            fclose($fp);
        }
---------------수정후
  $fp = fopen($filepath, "rb");
  while(!feof($fp)) {
      echo fread($fp, 100*1024);
      flush();
  }
  fclose ($fp);
저는 원도우 환경에서 테스트했습니다만; 주소를 알려주시면 확인해보겠습니다.
아래 다운로드 주소 링크도 바꾸셨는지 확인해보세요
300M와 700M를 테스트를 해봤는데.
여전히 메모리 잡아 먹는 현상이 있습니다.

테스트는 리눅스 fedora core 2구요
512M환경입니다.
아파치2, php 4,3, mysql 4를 사용해서 테스트 했습니다.
개인적으로 컴파일해서 설치한 환경입니다.

아래 그림을 참조하세요
http://book.zbox.org/data/member/mrseong/cap.jpg
썸네일 변환방식이 어떻게 되는지는 잘 모르겠는데 썸네일을 만드는 프로그램이 그누보드식으로
/?doc=bbs/pic.php 이런식으로 호출된다면 메모리를 많이 차지하게 될겁니다.
얼마전에 답사기 스킨중에 GD 썸네일 이미지를 사용할 경우 용량이 큰 파일을 썸네일로 변환하는 과정에서 메모리 부족현상을 나타내며 에러 메세지가 출력된 기억이 있습니다.(몇몇분들께서 저와 같은경험을 하시더군요) 제 홈페이지 웹호스팅에서는 10M 까지 제한을 걸어 놓았더군요.. 사진 용량이 1M도 안되는 용량이었지만 썸네일로 변환 과정에서는 메모리를 많이 차지한 모양입니다.
위에 파일을 받아서 수정하면 그 부분이 해결될지 모르겠네요.. 지금 테스트 해 봐야겠습니다..
대단히 감사합니다!!
제가 원하던겁니다.ㅠ.ㅠ
정말 노력을 많이 했던건데 아무리해도 제머리론 해결이 안되어서.ㅠ.ㅠ
흑흑흑흑
정말 감사합니다!!
© SIRSOFT
현재 페이지 제일 처음으로