0

我在 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;
    }

}

但是浏览器说:'等待 mysite'。如果我删除sleep(1)一切都是正确的。我也在 apache 中进行了测试,一切都是正确的。

所以我在 IIS 中遇到了睡眠功能的问题。

4

2 回答 2

1

您需要为此正确配置服务器。TBH 你应该在服务器上使用一些东西来做到这一点,而不是依赖 PHP,sleep(1);导致它发送一个块,暂停,发送一个块暂停等。它不保持 10kbps,而是从 500kbps 一秒到 0 kbps 一秒钟,它可能平均到 10kbps,但它不一样,一些程序不会正确处理它并可能终止下载。您应该查看 QoS(如何在我的 IIS Windows 服务器上限制从我的网站下载速度?

于 2013-09-19T18:29:35.267 回答
0

IIS到底有什么问题?请注意,等待 1 秒意味着您的脚本可能会超过超时限制(可能低至 30 秒),因此 IIS 将终止您的脚本。

如果你想提供大文件,我建议直接从 IIS 提供它们并使用 IIS 的内置速率限制器而不是通过 PHP。

见这里:http ://www.iis.net/configreference/system.applicationhost/sites/site/limits

于 2013-09-19T18:18:45.860 回答