PHP または Javascript を使用してネットワーク速度をテストする方法を見つけようとしています。
これは可能ですか?
理想的には、速度をテストし、クライアントに配信するコンテンツの量を動的に決定したいと思います...
私は主にモバイル デバイスについて話していることを指摘しておく必要があります。ほとんどのブロードバンド接続はほとんど変わらないので、誰かが WiFi ネットワークに接続しているか、セルラー データ ネットワークで苦労しているかを測定することを目指しています。
PHP または Javascript を使用してネットワーク速度をテストする方法を見つけようとしています。
これは可能ですか?
理想的には、速度をテストし、クライアントに配信するコンテンツの量を動的に決定したいと思います...
私は主にモバイル デバイスについて話していることを指摘しておく必要があります。ほとんどのブロードバンド接続はほとんど変わらないので、誰かが WiFi ネットワークに接続しているか、セルラー データ ネットワークで苦労しているかを測定することを目指しています。
ajax リクエストを実行して固定サイズのデータ チャンクをダウンロードし、前後の時間をチェックして速度の大まかな目安を取得します。
var start = new Date();
$.ajax(....);
var end = new Date();
var elapsed = end.getTime() - start.getTime(); // elapsed time in milliseconds.
有効なリクエストを取得するには、十分な量のデータ チャンクを使用する必要があります。つまり、このテストを行うためだけにかなりの量の帯域幅を浪費していることになります。
彼らの見方では、JS -> PHP -> JS 呼び出しを使用して応答の時間を計ることができますが、それはかなり不正確です。また、かなりの量のデータを使用する必要があり (過剰な帯域幅の使用に関する懸念)、ブラウザー間に存在する/存在しないサーバー ヘッダーのために明示的な回答を得ることはありません。最初の数秒間は 12 メガビットの速度を提供するサービス プロバイダー (咳comcast咳) にも懸念がありますが、その後は 3 メガビットにまで低下します。ストリーム自体にデータ不足が生じ、常にバッファリングされます。
最善の解決策は、ストリーミング プロトコルに、入ってくるデータの量に基づいて調整できるロジックを組み込むことです。おそらく、低帯域幅の品質で開始し、バッファーが帯域幅よりも速く成長していることに気付くと、バーを上げます。データが再生されています (これは、Hulu、YouTube、または Amazon ビデオが行うことです)。