2009-10-22 22 views
2

파일을 처리하는 PHP 파일이 있지만 문제는 두 브라우저에 연결된 두 링크를 클릭하면 두 번째 다운로드가 첫 번째 파일이 시작될 때까지 시작되지 않는다는 것입니다 완료되었습니다! 어떤 아이디어? download.php downloadfile = 1 개 PHP로 파일 다운로드 - 한 번에 하나씩 다운로드!

  • 링크 2 :? download.php downloadfile = 2
  • 다운로드 코드

    header('Content-Type: application/octet-stream'); 
    header('Content-Description: File Transfer'); 
    header('Content-Disposition: attachment; filename="'.basename($filename).'"'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($fullpath)); 
    readfile($fullpath); 
    

    • 링크 1 링크
    +3

    총 또는 호스트 당 하나 열려있는 동시 연결의 매우 제한된 수 있습니다 어떤 OS/웹 서버 설정? 일부 설치는 그렇게합니다. –

    +0

    서버는 어떤 OS입니까? 아파치를 사용하고 있습니까? max_concurrant_settings는 어떻게 생겼습니까? –

    +0

    서버는 Apache를 실행하는 Linux 서버입니다. max_concurrent_settings 설정은 어디에서 찾을 수 있습니까? –

    답변

    5

    Ther 이것은 다른 이유 일 수 있습니다.

    • 세션을 사용 중입니다. 따라서 한 번에 하나의 스크립트 만 세션을 수정할 수 있습니다. 따라서 다운로드 B는 다운로드 A가 완료된 후에 시작해야합니다. 브라우저 A에서 다운로드 A와 브라우저 B에서 B를 동시에 다운로드하여 두 번 다운로드를 시도 했습니까? session_write_close

    • 브라우저에서 서버에 대한 다중 연결을 열지 않고 단일 연결을 다시 사용하고 첫 번째 요청이 완료 될 때까지 기다려야하는 기타 HTTP 문제가 있습니다.

    • 만 당신은 아파치 동시 연결의 수를 제한하지 않는 것이 확실

    +1

    나는 2 개의 브라우저를 동시에 시험해 보았는데, 정상적으로 작동하는 것 같다. 파이어 폭스와 사파리에서 무슨 일이 일어나고 있는지 알 수는 없습니다. –

    +0

    @ Bisbo .. session_write_close에 대한 첫 번째 요점은 ur 문제를 해결해야한다고 생각합니다. 나는 파일 내용을 보내기 전에 그 위치를 제안합니다. –

    +1

    아 멋지다! 세션을 사용한 후에 완벽하게 작동하는 session_write_close()를 사용했습니다. 도와 줘서 고마워! 정말로 나를 괴롭혔다 :-) –

    관련 문제