l

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

· 2009-04-10 (금) 09:23:52 · 1232 · 9

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

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

방법은 첨부된 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개

2009-04-10 (금) 10:11:19
왕~ 뭔 내용인지 모르겠지만 프로그램이 이뻐요. 개발하신다는 게시판 기대되요. ㅎㅎ

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

저는 차이를 잘 못느끼겟어요. 확인해봐 주세요.
header 에서 content-length부분을 빼고 시도해보셨나요?
2009-04-10 (금) 12:57:03
opencode에서 처음 다운로드 한거만 1초에 끊어지고 이후에는 괜챦아요. ㅠ..ㅠ...
그리고 확장자가 zip이 아닌 경우는 어떤지도 테스트해주세요.
2009-04-10 (금) 13:09:39
잘 내려와요. 그런데, 차이는 체감하지 못하겠어요.
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();
댓글을 작성하시려면 로그인이 필요합니다.

자유게시판

202,899건
+
제목 글쓴이 날짜 조회
09-04-10 조회 2,123
09-04-10 조회 1,359
09-04-10 조회 1,950
09-04-10 조회 1,501
09-04-10 조회 1,263
09-04-10 조회 1,486
09-04-10 조회 2,670
09-04-10 조회 1,466
09-04-10 조회 1,201
09-04-10 조회 3,028
09-04-10 조회 1,130
09-04-10 조회 1,344
09-04-10 조회 1,211
09-04-10 조회 1,219
09-04-10 조회 1,233
09-04-10 조회 1,220
09-04-10 조회 1,426
09-04-10 조회 4만
09-04-10 조회 1,917
09-04-10 조회 2,372