【发布时间】:2017-07-07 19:41:53
【问题描述】:
我的 VPS 服务器出现以下问题。
我有一个长时间运行的 PHP 脚本,可以将大文件发送到浏览器。它做了这样的事情:
<?php
header("Content-type: application/octet-stream");
readfile("really-big-file.zip");
exit();
?>
这基本上是从服务器的文件系统中读取文件并将其发送到浏览器。我不能只使用直接链接(让 Apache 提供文件),因为应用程序中有业务逻辑需要应用。
问题在于,当此类下载正在运行时,该站点不会响应其他请求。
【问题讨论】:
-
这不是问题所在,但在提供大文件时,您应该始终调用
set_time_limit(0);。目前它对您没有任何影响,但如果您在某个时候将其移至Windows 平台,可能会解决您可能遇到的潜在问题。 -
您是如何发现问题的?您是否通过从同一台机器发出多个请求来测试这一点?你在使用会话吗?
-
@DaveRandom 我在尝试下载多个文件时注意到了这个问题(它们已排队等待下载)。我正在使用会话——刚刚尝试过,看起来这个限制不会影响其他会话。感谢您的想法 - 我现在会进一步调查。
标签: php apache concurrency