我编写了一个小型下载门户,并使用application/octet流下载文件。
function fu($filename)
{
header("Content-Type: application/octet-stream");
$save_as_name = basename($filename);
header("Content-Disposition: attachment; filename='"$save_as_name'"");
readfile($filename);
}
当我下载一个大文件时,在下载完成之前,无法浏览目录树。
有没有机会同时做到这一点?
您可能正在使用会话。当您在忙于提供下载服务的窗口a中打开了一个会话时,窗口B将无法获得任何页面,因为为a提供服务的PHP进程仍然打开/锁定了会话数据,而B正在等待释放该锁定。
简单的解决方案是在调用readfile()
之前的某个时刻调用session_write_close()
。这将把会话提交到服务器上的磁盘上,关闭它,然后释放锁,这样其他PHP进程就可以把它取回来。