O PHP deve rastrear a quantidade de tempo da CPU que um script específico usou para aplicar o limite de max_execution_time.
Existe uma maneira de obter acesso a isso dentro do script? Gostaria de incluir alguns registros nos meus testes sobre a quantidade de CPU que foi queimada no PHP real (o tempo não é incrementado quando o script está parado e aguardando o banco de dados).
Eu estou usando uma caixa Linux.
php
performance
twk
fonte
fonte
utime
/stime
/ hora do relógio de parede? E você pode postar um link para um exemplo reproduzível que mostra esse comportamento? Em qual versão do OS / php / versão do servidor da web você está? De qualquer forma, você pode postar uma nova pergunta e criar um link para ela aqui.Se tudo o que você precisa é o tempo do relógio de parede, em vez do tempo de execução da CPU, é simples calcular:
Observe que isso incluirá tempo em que o PHP ficará aguardando recursos externos, como discos ou bancos de dados, que não serão utilizados para max_execution_time.
fonte
Versão mais curta da resposta de talal7860
Como apontado, este é o 'tempo do relógio de parede' e não o 'tempo da CPU'
fonte
A maneira mais fácil:
fonte
60
.. Não há diferença mesmo.fonte
Eu criei uma classe ExecutionTime a partir da resposta phihag que você pode usar fora da caixa:
uso:
fonte
getrusage
só funciona desde o PHP 7.Gringod em developerfusion.com dá esta boa resposta:
De ( http://www.developerfusion.com/code/2058/determine-execution-time-in-php/ )
fonte
Será mais bonito se você formatar os segundos como:
irá imprimir
Isso é muito melhor do que
fonte
A maneira mais barata e suja de fazer isso é simplesmente fazer
microtime()
chamadas nos locais do seu código que você deseja comparar. Faça isso antes e depois das consultas ao banco de dados e é simples remover essas durações do restante do tempo de execução do script.Uma dica: o tempo de execução do PHP raramente será o que causa o tempo limite do script. Se um script atingir o tempo limite, quase sempre será uma chamada para um recurso externo.
Documentação sobre microtime do PHP: http://us.php.net/microtime
fonte
Eu acho que você deveria olhar para o xdebug. As opções de criação de perfil fornecerão uma vantagem para conhecer muitos itens relacionados ao processo.
http://www.xdebug.org/
fonte
Para mostrar minutos e segundos, você pode usar:
fonte
Eu escrevi uma função que verifica o tempo de execução restante.
Aviso: A contagem do tempo de execução é diferente na plataforma Windows e Linux.
Usando:
fonte
Você pode apenas querer saber o tempo de execução de partes do seu script. A maneira mais flexível de cronometrar partes ou um script inteiro é criar três funções simples (código de procedimento fornecido aqui, mas você pode transformá-lo em uma classe colocando o timer de classe {} em volta dele e fazendo alguns ajustes). Este código funciona, basta copiar e colar e executar:
fonte
$_SERVER['REQUEST_TIME']
confira isso também. ie
fonte
Como alternativa, você pode simplesmente colocar esta linha em seus blocos de código e verificar os registros php. Para funções realmente lentas, é bastante útil:
Para depuração séria, use o XDebug + Cachegrind, consulte https://blog.nexcess.net/2011/01/29/diagnosing-slow-php-execution-with-xdebug-and-kcachegrind/
fonte
Expandindo ainda mais a resposta de Hamid, escrevi uma classe auxiliar que pode ser iniciada e interrompida repetidamente (para criação de perfil dentro de um loop).
fonte
microtime de retorno (true) - $ _SERVER ["REQUEST_TIME_FLOAT"];
fonte