Obter tamanho de várias pastas - Como calcular o consumo de recursos do servidor do processo?

0

Eu preciso obter o tamanho de várias pastas (com subpastas e vários arquivos) e atualizar um banco de dados, a fim de limitar o upload de usuários para o meu servidor. Esse processo deve ser feito periodicamente, no menor tempo possível.

Eu criei um crontab para executar este procedimento a cada 30 minutos, mas seria ótimo se esse intervalo de tempo pudesse ser reduzido para 10 minutos ou menos. Não tenho ideia de quanto recursos esse processo está recebendo do servidor. Eu tenho um humilde VPS com 1 GB de RAM, 1 CPU, Debian 8, Apache2 e MariaDB.

A minha pergunta é: como calcular o consumo de recursos do servidor deste processo, para estimar qual intervalo de tempo usar?

Btw, aqui está a função PHP que estou usando para obter o tamanho da pasta (e subpastas):

function dirSize($dir) {
    $dir = strval($dir);
    if (!is_dir($dir)) return 0;
    $cmd = popen("ls -ltrR {$dir} |awk '{print \}'|awk 'BEGIN{sum=0} {sum=sum+\} END {print sum}'", 'r');
    $size = intval(fgets($cmd, 80));
    pclose($cmd);
    return $size;
}

Obrigado!

EDITAR:

Recebi uma boa sugestão do @meuh para atualizar o banco de dados toda vez que um arquivo é carregado ou excluído, adicionando ou subtraindo o tamanho de arquivo único. Eu gostaria de saber, em termos de consumo de recursos, se essa é uma abordagem melhor. Obrigado!

    
por Guybrush 05.11.2017 / 14:21

1 resposta

0

Você pode tentar o comando du :

du - estimate file space usage

Exemplo:

$ du -d 0 -h Documents/
3.2M    Documents/

O comando du tem muitas opções, você pode até mesmo passar todos os diretórios de uma só vez e obter um total do uso do disco (verifique man du para mais informações).

Para encontrar o tempo gasto (de uma maneira prática), você pode preceder time :

$ time du -d 0 -h Documents/
3.2M    Documents/

real    0m0.004s
user    0m0.002s
sys 0m0.001s

Esse tempo provavelmente varia com a quantidade de arquivos e pastas em um diretório.

    
por 05.11.2017 / 14:43