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);。これにより、チャンクの送信、一時停止、チャンクの一時停止などが発生します。 1 秒間 kbps の場合、平均すると 10kbps になる場合がありますが、これは同じではなく、プログラムによっては正しく処理されず、ダウンロードが終了する場合があります。QoS を調べる必要があります ( IIS Windows サーバーで Web サイトからのダウンロード速度を制限する方法は? )

于 2013-09-19T18:29:35.267 に答える
0

IIS の問題は正確には何ですか? 1 秒待機すると、スクリプトがタイムアウト制限を超える可能性があることを意味することに注意してください (これは 30 秒まで短くなる可能性があります)。そのため、IIS はスクリプトを強制終了します。

大きなファイルを提供する場合は、IIS から直接提供し、PHP ではなく IIS の組み込みレート リミッターを使用することをお勧めします。

ここを参照してください: http://www.iis.net/configreference/system.applicationhost/sites/site/limits

于 2013-09-19T18:18:45.860 に答える