문제

내 웹사이트를 위한 간단한 프록시 서버를 만들고 있습니다.mod_proxy와 mod_cache를 사용하지 않는 이유는 다른 논의입니다.코드는 다음과 같습니다.

    shell_exec("nohup curl --create-dirs -o {$write_path} {$source_url} > /dev/null 2> /dev/null & echo $!");
    sleep(1);

    $read_speed = 65.5; # 65.5 kb/s download rate
    $handle = fopen($write_path, "rb");

    $content_type = select_meta_item($headers, 'Content-Type');
    $file_size = select_meta_item($headers, 'Content-Length');
    send_headers($content_type, $file_size); 
    flush();

    while (!feof($handle))
    {
        echo fread($handle, round($read_speed * 1024));
        flush();
        sleep(1);
    }

    fclose($handle);

이 방법을 사용하면 MP3 스트리밍이 작동하지 않습니다.Chrome에서는 재생되지만 Firefox에서는 재생되지 않습니다.처음에는 Long Tail의 JW Player를 통해 MP3 파일을 스트리밍하는 데 이것을 사용할 것입니다.모두 문제가 해결되면 이를 사용하여 ZIP 파일을 보낼 것입니다.

도움이 되었습니까?

해결책 2

나는 그것을 알아. 코드는 잘 작동합니다.

이 파일은 404 핸들러 (Errordocument)에 의해 Apache에 의해 호출되었습니다. Apache는 PHP 스크립트가 호출되기 전에 404 헤더를 자동으로 보냈습니다.

이 파일 (위의 코드)은 컬 프로세스를 시작하지 않고 스트리밍하는 파일로 리디렉션합니다. Apache가 404를 반환 한 이후 Firefox는 MP3 응답을 무시했습니다. (크롬은 그렇지 않았지만). 이제 리디렉션되었으므로 잘 작동합니다.

다른 팁

문제는 클라이언트 구현으로 파일 형식을 스트리밍할 수 있는지 여부입니다.만약에 Firefox는 mp3 재생을 지원하지 않습니다. 다운로드가 완료될 때까지 서버 측 속임수는 스트리밍을 달성하는 데 도움이 되지 않습니다.플래시 기반 인라인 플레이어와 같은 클라이언트 측 지원이 필요합니다.

ZIP 파일의 경우 인코딩 테이블이 아카이브가 완전히 다운로드될 때까지 어떤 소프트웨어도 아카이브를 열 수 없습니다.

참고로 FIFO 생성을 고려해 보셨나요? curl FIFO 입력에서 적용 readfile FIFO 출력에 추가하여 OS가 작업을 처리하도록 합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top