application / octet-stream阻止浏览器

时间:2013-02-22 15:33:25

标签: php download

我编写了一个小型下载门户,我使用application / octet-stream下载文件。

function fu($filename)
{
     header("Content-Type: application/octet-stream");  
     $save_as_name = basename($filename);   
     header("Content-Disposition: attachment; filename=\"$save_as_name\""); 
     readfile($filename);   
}

当我下载大文件时,在下载完成之前无法浏览目录树。

有没有机会同时这样做?

1 个答案:

答案 0 :(得分:0)

你可能正在使用会话。当您在窗口A中打开一个忙于提供下载的会话时,窗口B将无法获取任何页面,因为服务A的PHP进程仍然打开/锁定会话数据,而B正在等待该锁定被释放。

简单的解决方案是在致电readfile()之前的某个时刻致电session_write_close()。这会将会话提交到服务器上的磁盘,关闭它,然后释放锁,以便其他PHP进程可以重新选择它。