Como posso calcular estatísticas (espaço sendo usado/disponível) para um diretório?
Pessoal,
Preciso pegar quanto de espaço em disco está disponivel para um determinado diretório e o que está sendo utilizando, para apresentar na tela de um admin.
Se alguem puder me ajudar.
Obrigado.
Preciso pegar quanto de espaço em disco está disponivel para um determinado diretório e o que está sendo utilizando, para apresentar na tela de um admin.
Se alguem puder me ajudar.
Obrigado.
comentários (0)
suspender
Lista de Respostas:
02/06/2009 1:02am
(~16 anos atrás)
(~16 anos atrás)
Caso não tenha conhecimento da SPL fica complicado explicar mas enfim:
Para converter para um número legível algúem publicou uma função legal na documentação:
Já para pegar quanto espaço de disco está livre é mais fácil:
E já que estamos falando disto... para saber o espaço total no disco:
Espero que era isto que vc queria!
Abs,
Alex
$iterador = new RecursiveDirectoryIterator($pathName);
$iteradorRecursivo = new RecursiveIteratorIterator($iterador);
$tamanho = 0;
foreach ( $iteradorRecursivo as $arquivo ) {
$tamanho += $arquivo->getSize();
}
echo 'tamanho = ' . $tamanho . ' bytes';
// SplFileinfo::getSize() retorna o número de bytes
Para converter para um número legível algúem publicou uma função legal na documentação:
function decodeSize( $bytes )
{
$types = array( 'B', 'KB', 'MB', 'GB', 'TB' );
for( $i = 0; $bytes >= 1024 && $i < ( count( $types ) -1 ); $bytes /= 1024, $i++ );
return( round( $bytes, 2 ) . " " . $types[$i] );
}
// ou seja, echo 'tamanho é ' . decodeSize($tamanho);
Já para pegar quanto espaço de disco está livre é mais fácil:
echo 'espaco livre = ' . decodeSize(disk_free_space($disco));
// OBS: $disco: no windows vc colocaria 'C:', etc dependendo da particao que queira verificar, no linux '/' ou o caminho desejado
// OBS2: olha a funcao decodeSize() denovo!
E já que estamos falando disto... para saber o espaço total no disco:
echo 'espaco total = ' . decodeSize(disk_total_space($disco));
Espero que era isto que vc queria!
Abs,
Alex