我在iis中编写php代码以提供速度限制下载文件,因此我需要使用睡眠功能来限制速度。
这里,我的代码几行:
set_time_limit(0);
while(!feof($file))
{
echo fread($file, 1024*10);
ob_flush();
flush();
sleep(1);
if (connection_status()!=0)
{
@fclose($file);
exit;
}
}
但浏览器说:'等待谜'。如果我删除sleep(1)
一切都是正确的。我也用apache测试,一切都是正确的。
所以我在IIS中遇到了睡眠功能问题。
答案 0 :(得分:1)
您需要为此正确配置服务器。 TBH你应该在服务器上使用一些东西来做,而不是依赖PHP,sleep(1);
导致它发送一个块,暂停,发送一个块暂停等等。它不保持10kbps但是从500kbps开始对于一秒钟的第二个0kbps,它可能平均为10kbps,但它不一样,有些程序不会对它进行正确处理,并可能终止下载。您应该研究QoS(How to Limit Download Speeds from my Website on my IIS Windows Server?)
答案 1 :(得分:0)
IIS的问题究竟是什么?请注意,等待1秒意味着您的脚本可能超过超时限制(这可能低至30秒),因此IIS将终止您的脚本。
如果您想提供大型文件,我建议您直接从IIS提供服务,并使用IIS内置的速率限制器而不是PHP。
见这里:http://www.iis.net/configreference/system.applicationhost/sites/site/limits