PHP 8.4.1 Released!

getrusage

(PHP 4, PHP 5, PHP 7, PHP 8)

getrusageObtém os usos atuais de recursos

Descrição

getrusage(int $mode = 0): array|false

Esta é uma interface para getrusage(2). Ele obtém dados retornados a partir da chamada de sistema.

Parâmetros

mode

Se mode for 1, getrusage será chamado com RUSAGE_CHILDREN.

Valor Retornado

Retorna um array associativo contendo os dados retornados da chamada de sistema. Todas as entradas são acessíveis usando seus nomes de campo documentados. Retorna false em caso de falha.

Registro de Alterações

Versão Descrição
7.0.0 Esta função agora é suportada no Windows.

Exemplos

Exemplo #1 Exemplo de getrusage()

<?php
$dat
= getrusage();
echo
$dat["ru_oublock"]; // número de operações de saída em bloco
echo $dat["ru_inblock"]; // número de operações de entrada em bloco
echo $dat["ru_msgsnd"]; // número de mensagens IPC enviadas
echo $dat["ru_msgrcv"]; // número de mensagens IPC recebidas
echo $dat["ru_maxrss"]; // tamanho máximo de conjunto residente
echo $dat["ru_ixrss"]; // tamanho integral da memória compartilhada
echo $dat["ru_idrss"]; // tamanho integral de dados não compartilhados
echo $dat["ru_minflt"]; // número de recuperações de página (falhas de página soft)
echo $dat["ru_majflt"]; // número de falhas de página (falhas de página graves)
echo $dat["ru_nsignals"]; // número de sinais recebidos
echo $dat["ru_nvcsw"]; // número de mudanças voluntárias de contexto
echo $dat["ru_nivcsw"]; // número de mudanças de contexto involuntárias
echo $dat["ru_nswap"]; // número de trocas de páginas
echo $dat["ru_utime.tv_usec"]; // tempo usado pelo usuário (microssegundos)
echo $dat["ru_utime.tv_sec"]; // tempo usado pelo usuário (segundos)
echo $dat["ru_stime.tv_usec"]; // tempo do sistema usado (microssegundos)
echo $dat["ru_stime.tv_sec"]; // tempo do sistema usado (segundos)
?>

Notas

Nota:

No Windows, getrusage() irá retornar somente os seguintes membros:

  • "ru_stime.tv_sec"
  • "ru_stime.tv_usec"
  • "ru_utime.tv_sec"
  • "ru_utime.tv_usec"
  • "ru_majflt" (somente se mode for RUSAGE_SELF)
  • "ru_maxrss" (somente se mode for RUSAGE_SELF)

Se getrusage() for chamada com mode definido como 1 (RUSAGE_CHILDREN), então o uso de recursos para threads será coletado (ou seja, que internamente a função é chamada com RUSAGE_THREAD).

Nota:

No BeOS 2000, apenas os seguintes membros são retornados:

  • "ru_stime.tv_sec"
  • "ru_stime.tv_usec"
  • "ru_utime.tv_sec"
  • "ru_utime.tv_usec"

Veja Também

  • Página do manual do sistema operacional sobre o comando getrusage(2)

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
10
jlh at gmx dot ch
7 years ago
Note that this function returns rusage of the current process. In a web environment where you have long running apache processes that serve several requests with PHP executions, this will return cumulative timings and is therefore not suitable for telling how much user time your used. The best you could do is to call getrusage() once at the beginning and once at the end and calculate the difference.
up
3
Anonymous
6 years ago
up
3
Domas Mituzas
16 years ago
getrusage() reports kernel counters that are updated only once application loses context and a switch to kernel space happens. For example on modern Linux server kernels that would mean that getrusage() calls would return information rounded at 10ms, desktop kernels - at 1ms.

getrusage() isn't usable for micro-measurements at all - and getmicrotime(true) might be much more valuable resource.
To Top