繁体   English   中英

通过PHP进行的文件下载在Dreamhost上被神秘中断

[英]File download via PHP being mysteriously interrupted on Dreamhost

如果用户具有正确的身份验证,我已经编写了一个简单的PHP脚本来下载隐藏文件。 整个设置工作正常:它发送正确的头,并且文件传输开始正常(结束时很好-对于小文件)。

但是,当我尝试提供150 MB的文件时,该连接在靠近文件中间的位置神秘地中断了。 这是相关的代码片段(从Internet上的某个地方获取并由我改编):

    function readfile_chunked($filename, $retbytes = TRUE) {
    $handle = fopen($filename, 'rb');
    if ($handle === false) return false;
    while (!feof($handle) and (connection_status()==0)) {
        print(fread($handle, 1024*1024));
        set_time_limit(0);
        ob_flush();
        flush();
    }
    return fclose($handle);
}

在调用上面的函数之前,我还做了一些其他代码来尝试解决问题,但是据我所知,它什么也没做:

    session_write_close();
    ob_end_clean();

    ignore_user_abort();
    set_time_limit(0);

如您所见,它不会立即将整个文件加载到内存中,也不会像这样疯狂。 更令人困惑的是,传输终止的实际时间似乎在50到110 MB之间浮动,并且似乎在彼此之间几秒钟之内终止了到同一文件的所有连接(尝试通过尝试与朋友同时下载)。 没有任何内容附加到被中断的文件,并且我在日志中看不到任何错误。

我正在使用Dreamhost,因此我怀疑他们的看门狗可能正在杀死我的进程,因为它已经运行了太长时间。 有没有人可以分享此事的经验? 可能还有其他问题吗? 有什么解决方法吗?

作为记录,我的Dreamhost被设置为使用PHP 5.2.1 FastCGI。

我对Dreamhost的经验很少,但是您可以改用mod_xsendilfe (如果Dreamhost允许)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM