从同一浏览器和相同的PHP脚本下载php同步文件

gio*_*gio 2 php file download

<?php

$filename= './get/me/me_'.rand(1,100).'.zip';

header("Content-Length: " . filesize($filename));
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=foo.zip');

readfile($filename);
?>
Run Code Online (Sandbox Code Playgroud)

嗨,我有这个简单的代码强制随机文件下载,我的问题是,如果我从同一浏览器调用脚本两次或更多次,第二次下载将不会开始,直到第一次下载完成或中断.因此,我每次只能下载一个文件.你有什么线索吗?

ben*_*ley 6

这可能与PHP的会话处理有关.

使用默认会话处理程序,当PHP脚本打开会话时,它会锁定它.需要访问它的后续脚本必须等到第一个脚本完成它并解锁它(这在关机时自动发生,或者通过session_write_close()).这将表现为脚本没有做任何事情,直到前一个脚本以完全相同的方式完成.

显然你没有明确地启动会话,但是有一个配置标志会导致会话自动启动:session.auto_start - http://www.php.net/manual/en/session.configuration.php

使用phpinfo()来确定它是否设置为true,或者查看配置.您还可以尝试将session_write_close()添加到脚本的顶部,看看它是否会使问题消失.