成功下载文件时,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,仍然有问题。