PHP 下载会阻止其余请求

标签 php session locking download

我正在使用一个非常简单的脚本从我的服务器下载文件:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fichero));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);

它工作正常,但当浏览器正在下载文件时,我无法浏览该站点或从同一服务器下载其他文件。我必须等到它完成。它发生在 Chrome 和 Firefox 中,我也使用其他方法用 PHP 下载文件,但所有这些我都有这个问题......所以我想这是服务器的问题??

非常感谢您:)

最佳答案

这是因为您使用的是 PHP session ,当一个用户的 session 在一个请求中打开时,同一 session 不能在另一个请求中打开。

在 readfile() 之前执行 session_write_close()。

关于PHP 下载会阻止其余请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077635/

相关文章:

php - 如何使用 Propel ORM 查找数据库中的重复条目?

php - 用 Doctrine 来计数

php - 如何在州和城市的 yii 框架中创建和查看关系

java - SocketInitiator getSession 提供的 session 顺序与配置文件中的顺序不同

spring - Spring 请求和 session 范围有什么区别?

php - 消息为 'Call to undefined method Illuminate\Database\Query\Builder::toArray()' 的 BadMethodCallException

python - Flask session 字典键被转换为字符串

c++ 跨方法锁定

java - 在 Web 组件中使用 JPA 锁

c++ - 可以在没有互斥锁的情况下读取和验证共享内存吗?