如何通过PHP函数连接到FTP时测量PHP中的FTP传输速度

Pen*_*m10 2 php ftp benchmarking

我通过PHP ftp_函数连接到服务器.

如何测量传输速度?

phi*_*hag 6

使用非阻塞ftp函数下载文件并计算时间和文件大小差异.下面是一个带指数平滑的简单演示,可以防止速度过快跳跃:

define('ALPHA', 0.2); // Weight factor of new calculations, between 0 and 1
$ftp = ftp_connect(...);
$tmp = ftp_nb_get($ftp, $filename, $filename, FTP_BINARY);
$transferred = 0;
$rate = 0;
$time = microtime(true);
while ($tmp == FTP_MOREDATA) {
   $tmp = ftp_nb_continue($ftp);

   $timeNow = microtime(true);
   $sizeNow = filesize($filename);
   $currentRate = ($sizeNow - $transferred) / ($timeNow - $time);
   $rate = ALPHA * $currentRate + (1 - ALPHA) * $rate;
   $time = $timeNow;
   $transferred = $sizeNow;

   echo "Current transfer speed: $rate B/s\n";
}
Run Code Online (Sandbox Code Playgroud)

如果你想为同样的事情ftp_nb_put()上传,你就必须更换filesize($filename)ftp_size($ftp2,$filename),这里$ftp2必须是第二个相同的连接,只是用来问远程文件的大小,因为ftp_size()不会与你的主连接工作,而无阻塞传输正在处理.