成功下载文件时,PHP服务器和客户端之间的连接中断

成功下载文件时,PHP服务器和客户端之间的连接中断,php,readfile,Php,Readfile,这是我的代码: error_log('download start'); readfile('setup.exe'); error_log('download complete'); 文件已成功接收,但第三行未执行,其日志不是“下载完成” 很长一段时间以来,我们一直面临着这个问题,我们还试图发送这个文件的块(使用flush),在几个块之后,连接丢失,因此其余的可执行代码没有运行(但是文件收到了)。 我们知道在php中使用连接处理会丢失连接。 我们还将连接时间限制设置为最大值。您需要先设置某些头

这是我的代码:

error_log('download start');
readfile('setup.exe');
error_log('download complete');
文件已成功接收,但第三行未执行,其日志不是“下载完成” 很长一段时间以来,我们一直面临着这个问题,我们还试图发送这个文件的块(使用flush),在几个块之后,连接丢失,因此其余的可执行代码没有运行(但是文件收到了)。 我们知道在php中使用连接处理会丢失连接。
我们还将连接时间限制设置为最大值。

您需要先设置某些头文件、
二进制文件等:

$file = 'setup.exe';

if (file_exists($file)) {
    error_log('download start');
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    $result = readfile($file);

    if ($result) {
       error_log('download complete');
    }
    else {
       error_log('unable to download');
    }

    exit;
}

我使用它是因为它更容易做这些事情,而且它支持恢复@死亡谢谢,我刚刚尝试了你提供的链接中的所有解决方案,但仍然存在问题。看起来它在无任何原因的特定字节数后会断开连接,但文件仍成功发送,其余代码未执行。你能用
文件\u put\u content
测试它,看看会发生什么吗?@Death-same-deal,仍然有问题。