대용량 파일 다운로드시 문제점 수정
그냥 문제점이라기 보단 그누보드의 구조상의 어쩔수 없는 현상같습니다.
이 문제점을 해결하려고 많이 노력했고 같은 현상이 있는분이 있을거같네요.
그누보드는 모든 파일에 아래의 구조가 포함되게 되어있습니다.
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--세션경로 수정
이 문제점을 해결하려고 많이 노력했고 같은 현상이 있는분이 있을거같네요.
그누보드는 모든 파일에 아래의 구조가 포함되게 되어있습니다.
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--세션경로 수정
첨부파일
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 18개
한참 고민하고 있었습니다. 파일 수정하고 나서 잘 되네요!
감사합니다.
한가지만 더 부탁드리면요 현재 아쿠아엠프를 홈페서 사용중입니다. 다운로드를 클릭하는 순간
엠프가 정지되어 버립니다. 음악이 계속 나오면서 다운받는 방법은 없을까요?
덴탈레인보우님은 몬가 잘못하신거같네요^^;
download.php 주석에 보니 // PHP 4.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);
아래 다운로드 주소 링크도 바꾸셨는지 확인해보세요
여전히 메모리 잡아 먹는 현상이 있습니다.
테스트는 리눅스 fedora core 2구요
512M환경입니다.
아파치2, php 4,3, mysql 4를 사용해서 테스트 했습니다.
개인적으로 컴파일해서 설치한 환경입니다.
아래 그림을 참조하세요
http://book.zbox.org/data/member/mrseong/cap.jpg
/?doc=bbs/pic.php 이런식으로 호출된다면 메모리를 많이 차지하게 될겁니다.
위에 파일을 받아서 수정하면 그 부분이 해결될지 모르겠네요.. 지금 테스트 해 봐야겠습니다..
제가 원하던겁니다.ㅠ.ㅠ
정말 노력을 많이 했던건데 아무리해도 제머리론 해결이 안되어서.ㅠ.ㅠ
흑흑흑흑
정말 감사합니다!!