다운로드 문제. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

다운로드 문제. 정보

다운로드 문제.

본문

마땅히 올릴곳이 없어서 여기다 올려봅니다.

오전에 다운로드 문제로 질문했었는데.
아직 완벽한 해결이 되질 않아서 올립니다.
오전에 올린 질문 내용은
-----------------------------------------------------------------------------------
그누보드 다운로드 클릭시
다운로드 창이 뜨기 까지의 시간이 너무 비약적으로 깁니다.

105.4K 정도 크기의 파일은 괜찮은데.
652.4K 정도 크기의 파일 부터는 사이트가 프리징되고
 (해당페이지에선 움직일수 있지만 / 접속속도 극악으로 느려짐 / 페이지 이동도 안됨.)
기다려도 다운로드 창이 뜨질 않는군요

다운로드 창이 빨리뜨게 할순 없을까요 ㅠㅠ
-----------------------------------------------------------------------------------

였습니다만 좀더 정확하게 이것저것 실험해봐서 결론을 낸 새로운 질문입니다.
1. download.php 에서 $download_rate 를 50000을 주면 다운로드 창은 빨리뜨지만.
다운받으면 파일 용량이 0 입니다.

2. 정상적으로 다운이 된다는 사람이 있다.

3. 파일 다운로드 소스를 인터넷에서 찾아서 바꿔봐도 증상은 똑같습니다.
  그러니까 이부분을
-----------------------------------------------------------------------------------
if (file_exists($filepath)) {
    if(preg_match("/msie/i", $_SERVER[HTTP_USER_AGENT]) && preg_match("/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);
        //}

        $download_rate = 40000;
        while(!feof($fp)) {
            // 1초 정도만 다운로드 되고, 다운로드가 안되는 경우 또는 다운로드 속도의 조정이 필요한 경우
            // 다운로드 rate = fread 문장의 100*1024(100k) * 1초 sleep(1) = 초당 100k
            echo fread($fp, round($download_rate * 1024));
            flush();
            sleep(1);
        }
        fclose ($fp);
        flush();
    } else {
        alert("해당 파일이나 경로가 존재하지 않습니다.");
    }

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



옛날 그누보드 소스로 바꿔도...(예전에 문제 없이 다운로드 되던소스)



-----------------------------------------------------------------------------------

if (preg_match("/^utf/i", $g4[charset]))
    $original = urlencode($file[bf_source]);
else
    $original = $file[bf_source];

@include_once("$board_skin_path/download.tail.skin.php");

if(preg_match("/msie/i", $_SERVER[HTTP_USER_AGENT]) && preg_match("/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();

$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();
-----------------------------------------------------------------------------------
로 바꿔도 증상이 똑같습니다. 분명이 전엔 아무런 이상없이 다운받아지던건데.



마지막으로 요즘 저는 그누보드 스킨 /빌더 게시판에서 다운을 받으면
파일이 깨져버리고 저희 사이트와 증상이 비슷하던데.....
이것도 관련있는건가요....







문제를 해결해주시는 분께. 여기 걸려있는 포인트 + 1000포인트를 더드립니다.


테스트 해보실분은 해주시기 바랍니다.
http://animo.ba.ro/main/bbs/board.php?bo_table=ani_garry&wr_id=21

테스터 아이디 : ani880616
패스워드 : 1234

댓글 전체

if (!fpassthru($fp)) {
            fclose($fp);
        }

아래의 내용은 주석처리
        $download_rate = 40000;
        while(!feof($fp)) {
            // 1초 정도만 다운로드 되고, 다운로드가 안되는 경우 또는 다운로드 속도의 조정이 필요한 경우
            // 다운로드 rate = fread 문장의 100*1024(100k) * 1초 sleep(1) = 초당 100k
            echo fread($fp, round($download_rate * 1024));
            flush();
            sleep(1);
        }
        fclose ($fp);
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT