我试图让我的网站的大小使用PHP和FTP。 我想获得httpdocs下所有东西的大小(文件和目录合并)使用php的FTP功能获取整个网站的大小
并输出:我的网站是42.5MB。
我试过ftp_rawlist,但是这给了我一个丑陋的数组,我不知道如何解析。 (林新的PHP阵列)。它也只给出了httpdocs下文件的文件大小,而不是httpdocs中目录内的文件。
是否有某种递归函数会执行此操作?
我试图让我的网站的大小使用PHP和FTP。 我想获得httpdocs下所有东西的大小(文件和目录合并)使用php的FTP功能获取整个网站的大小
并输出:我的网站是42.5MB。
我试过ftp_rawlist,但是这给了我一个丑陋的数组,我不知道如何解析。 (林新的PHP阵列)。它也只给出了httpdocs下文件的文件大小,而不是httpdocs中目录内的文件。
是否有某种递归函数会执行此操作?
想通了。
无论如何,这里是我写的让这个工作。
<?php
$host = 'HOST';
$username = 'USERNAME';
$password = 'PASSWORD';
$dir_is = 'DIRECTORY_TO_USE';
$conn_id = ftp_connect($host);
$login_result = ftp_login($conn_id, $username,$password);
$rawfiles = ftp_rawlist($conn_id, $dir_is, true);
$total_size = 0;
foreach($rawfiles as $info){
$info = preg_split("/[\s]+/", $info, 9);
$size = $info[4];
$total_size += $size;
}
function convert_size($size, $decimals = 1) {
$suffix = array('Bytes','KB','MB','GB','TB','PB','EB','ZB','YB','NB','DB');
$i = 0;
while ($size >= 1024 && ($i < count($suffix) - 1)){
$size /= 1024;
$i++;
}
return round($size, $decimals).' '.$suffix[$i];
}
echo 'Total Size is: '.convert_size($total_size);
?>
请以你的连接信息:
$host = 'HOST';
$username = 'USERNAME';
$password = 'PASSWORD';
$dir_is = 'DIRECTORY_TO_USE';
是否有某种递归函数会这样做?
不,你必须自己写。如果你对数组不熟悉,那就意味着你完全不熟悉php,因为大部分工作都是在数组上完成的。你会需要更多的字符串这里解析,这里是通用算法:
这是一个小步行约版,适当的是使用sscanf解析单行线,但我觉得这一块上面介绍对于初学者更容易理解
“大部分工作都是在阵列上完成的”? – 2011-06-12 17:46:05
快速的问题:我下面回答我自己的问题,但如果有人有时间来检查它,你可以看到,如果总文件大小是正确的?我在想它可能不会输出正确的尺寸。请第三方的健康检查。 = D – David 2011-10-16 14:28:43