我試圖讓我的網站的大小使用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