[PHP]Listato di una directory e sua dimensione
Siccome gestisco un sito d'appunti in cui sono presenti molti sorgenti liberamente scaricabili e raggruppati in directory,sarebbe carino poterli elencare tutti insieme in una pagina sola. A tal fine ho combinato e modificato alcune funzioni dei commentatori di php.net al mio scopo. Ecco le funzioni: la prima permette di dare un output più umanamente leggibile al numero di bytes forniti in input come parametro alla funzione.
La seconda funzione scansiona una directory e fornisce in output i files e directory ivi contenuti,omettendo la directory corrente (".") e quella superiore (".."). Dà altresì come risultato il numero di files la loro dimensione,così come la dimensione totale dei files che occupano la cartella. Usiamo la funzione precedente per l'output sulla dimensione dei files.
Il risultato dell'uso di queste due funzioni lo potete vedere qui.
Se invece volete qualcosa di molto più fico,vi suggerisco snif (simple and nice index file). Potete vedere la demo qui e il suo codice sorgente qui.
function size_readable($size, $retstring = null) {
// adapted from code at http://aidanlister.com/repos/v/function.size_readable.php
$sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
if ($retstring === null) { $retstring = '%01.2f %s'; }
$lastsizestring = end($sizes);
foreach ($sizes as $sizestring) {
if ($size < 1024) { break; }
if ($sizestring != $lastsizestring) { $size /= 1024; }
}
if ($sizestring == $sizes[0]) { $retstring = '%01d %s'; } // Bytes aren't normally fractional
return sprintf($retstring, $size, $sizestring);
}
La seconda funzione scansiona una directory e fornisce in output i files e directory ivi contenuti,omettendo la directory corrente (".") e quella superiore (".."). Dà altresì come risultato il numero di files la loro dimensione,così come la dimensione totale dei files che occupano la cartella. Usiamo la funzione precedente per l'output sulla dimensione dei files.
function scan_dir($path) {
$dir = $path;
$counter_files = $size = 0;
$string = "";
// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file == "." || $file == "..") continue;
$counter_files++;
$string.= "- $file - ".filetype($dir."/".$file)." ".filesize($dir."/".$file)." bytes
";
$size+=filesize($dir."/".$file);
}
closedir($dh);
}
echo "Directory contenente $counter_files files e occupante ".size_readable($size)."
Lista:
";
echo $string;
}
}
Il risultato dell'uso di queste due funzioni lo potete vedere qui.
Se invece volete qualcosa di molto più fico,vi suggerisco snif (simple and nice index file). Potete vedere la demo qui e il suo codice sorgente qui.
16:07
|
Categorie:
PHP
|
This entry was posted on 16:07
and is filed under
PHP
.
You can follow any responses to this entry through
the RSS 2.0 feed.
You can leave a response,
or trackback from your own site.
Iscriviti a:
Commenti sul post (Atom)
0 comments:
Posta un commento