0

これが私が計画していることです: 私のウェブページは単純なファイル共有システムです。ユーザーにダウンロード速度を表示したいと思います。100%ではありませんが、比較的良好です。そして、ダウンロードにかかる時間を書きたいと思います... 例: あなたのダウンロード速度は 300kb/s で、このファイルは 7 秒でダウンロードできます..


私は2つのPHPファイルを持っています。

アルファファイルはこれを行います:

ob_start();
require 'speedtest.php';
$sebesseg = ob_get_clean();

これは簡単です。speedtest.php から取得できる数値は 1 つだけです。私の問題は次のとおり(int)$size = 1です。私は彼のことをしたい: $time_left = $size / $sebesseg; $sebesseg速度を意味します。ダウンロード速度 (バイト単位)。しかし、私はsettype、または(int)$sebesseg..または私がすでに知っているものを使用することはできません。

4

2 に答える 2

1

ob_get_clean()文字列を返します。書き込みバイト数を取得するには

$sebesseg = ob_get_clean();
$numberOfBytes = strlen($sebesseg);

最後のコメントを読んだ後、簡単なダウンロード速度測定スクリプトを PHP で実行する方法の短い例を用意しました。次のコードは、あなたが望むことをするはずです:

<?php
// get the start time as UNIX timestamp (in millis, as float)
$tstart = microtime(TRUE);

// start outout buffering
ob_start();

// display your page
include 'some-page.php';

// get the number of bytes in buffer
$bytesWritten = ob_get_length();

// flush the buffer
ob_end_flush();

// how long did the output take?
$time = microtime(TRUE) - $tstart;

// convert to bytes per second
$bytesPerSecond = $bytesWritten / $time;

// print the download speed
printf('<br/>You\'ve downloaded %s in %s seconds',
    humanReadable($bytesWritten), $time);
printf('<br/>Your download speed was: %s/s',
    humanReadable($bytesPerSecond));

/**
 * This function is from stackoverflow. I just changed the name
 *
 * http://stackoverflow.com/questions/2510434/php-format-bytes-to-kilobytes-megabytes-gigabytes
 */
function humanReadable($bytes, $precision = 2) { 
    $units = array('B', 'KB', 'MB', 'GB', 'TB'); 

    $bytes = max($bytes, 0); 
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024)); 
    $pow = min($pow, count($units) - 1); 

    // Uncomment one of the following alternatives
    //$bytes /= pow(1024, $pow);
    $bytes /= (1 << (10 * $pow)); 

    return round($bytes, $precision) . ' ' . $units[$pow]; 
}

実際のダウンロード速度は、クライアントでのみ測定できることに注意してください。しかし、上記のコードの結果はほぼ問題ないはずです。

また、HTML ページ自体のダウンロード サイズを測定するだけです。画像。スタイルと JavaScript は、ページ読み込みの実際のダウンロード サイズを拡張します。ただし、ほとんどの場合、速度は HTML ドキュメントと同じになります。

于 2013-01-28T17:44:47.737 に答える