l

아빠불당님 이걸로 테스트 해보세요.

개인적으로 느리지만 보드를 하나 만들고 있는데 거기에 쓸 다운로더를 미리 공개하게 되네요.

이걸로 테스트해주시겠어요? 덕분에 저도 테스트할 겸.ㅎㅎ

방법은 첨부된 downloader.php를 lib폴더에 넣습니다.
 
bbs/download.php를 열고

if (file_exists($filepath)) {
    if(eregi("msie", $_SERVER[HTTP_USER_AGENT]) && eregi("5\.5", $_SERVER[HTTP_USER_AGENT])) {
        header("content-type: doesn/matter");
        header("content-length: ".filesize("$filepath"));
        header("content-disposition: attachment; filename=\"$original\"");
        header("content-transfer-encoding: binary");
    } else {
        header("content-type: file/unknown");
        header("content-length: ".filesize("$filepath"));
        header("content-disposition: attachment; filename=\"$original\"");
        header("content-description: php generated data");
    }
    header("pragma: no-cache");
    header("expires: 0");
    flush();

    if (is_file("$filepath")) {
        $fp = fopen("$filepath", "rb");

        // 4.00 대체
        // 서버부하를 줄이려면 print 나 echo 또는 while 문을 이용한 방법보다는 이방법이...
        //if (!fpassthru($fp)) {
        //    fclose($fp);
        //}

        while(!feof($fp)) {
            echo fread($fp, 100*1024);
            flush();
        }
        fclose ($fp);
        flush();
    } else {
        alert("해당 파일이나 경로가 존재하지 않습니다.");
    }

} else {
    alert("파일을 찾을 수 없습니다.");
}

를 찾은 후 다음으로 교체합니다.

include $g4['path'].'/lib/downloader.php';

$fd = new Downloader();
$fd->set($filepath, $original, 100, false);
$fd->download();

|

댓글 9개

왕~ 뭔 내용인지 모르겠지만 프로그램이 이뻐요. 개발하신다는 게시판 기대되요. ㅎㅎ

이게 그누의 download.php와 비교해서 좋은점이 뭔가요??? 궁금궁금...
차이가 있다면 header에서 무얼 보내느냐 차이가 되겠죠. 그걸 알고 싶어서 부탁한겁니다.
opencode.co.kr 의 다운로드를 바꿨는데요, 이것도 1초에 죽네요.
처음 다운로드에서는...ㅠ..ㅠ...

저는 차이를 잘 못느끼겟어요. 확인해봐 주세요.
header 에서 content-length부분을 빼고 시도해보셨나요?
opencode에서 처음 다운로드 한거만 1초에 끊어지고 이후에는 괜챦아요. ㅠ..ㅠ...
그리고 확장자가 zip이 아닌 경우는 어떤지도 테스트해주세요.
잘 내려와요. 그런데, 차이는 체감하지 못하겠어요.
phpinfo()를 해보셔서 http headers information 부분을 알려주실 수 있나요?
같은 증상의 글이 bugs.php.net 에도 올라와 있네요. http://bugs.php.net/bug.php?id=43306

content-transfer-encoding을 chunked로 놓고 다운하는 방법을 연구하다 그냥 내려놓았습니다.

마지막으로 이런 테스트를 해봄도 좋을 듯하네요.

while(!feof($fp)) {
echo fread($fp, 100*1024);
flush();
}

echo fread($fp, filesize($filepath));
flush();

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고