Prefácio
Salve, galera! Tudo na paz com vocês?
Hoje quero ensinar um esqueminha bem bacana que serve pra calcular o tempo de carregamento de uma página.
Você com certeza já viu em algum lugar diversos sites que possuem o tempo que a página levou para ser gerada. O que você talvez não sabia, é que o PHP pode fazer isso facilmente, utilizando apenas um cálculo de subtrair!
Conceito
Como você sabe, o PHP possui uma variável superglobal chamada $_SERVER (a qual já foi citada várias, e várias, e várias, e várias vezes) que guarda diversos dados importantes.
Hoje utilizaremos o índice REQUEST_TIME. Ele possui a timestamp do momento em que a página foi requisitada.
Para esta experiência, utilizaremos também a função mktime(), que retorna a timestamp atual.
O objetivo é, na última linha do arquivo, mostrar para o usuário o resultado da subtração destes dois valores, afim de que ele seja informado do tempo que a página demorou para ser carregada.
Mão na massa
O script a seguir é bastante simples. Consiste em um for que irá até 100 milhões e depois irá imprimir quanto tempo demorou, que obviamente irá variar de uma máquina para outra (aqui é um Core 2 Duo 2.4 e demorou 9 segundos).
<?php
for ($i=0; $i<100000000; $i++)
continue;
$tempo_carregamento = mktime() - $_SERVER['REQUEST_TIME'];
print "A página demorou {$tempo_carregamento} segundos para carregar.";
?>
Lembrando que você deve colocar sempre no final da página, caso contrário não terá efeito.
Conclusão
Você pode utilizar este cálculo para outros fins, como fazer um benchmark de sua aplicação. Poderá catalogar o tempo que suas páginas demoram para carregar e talvez fazer cache das mais demoradas.
E, claro, sempre que você achar uma nova utilidade pro código, coloque nos comentários! :)
Um grande abraço a todos e fiquem com Deus!
Rafael Jaques
Muitoooooo bom o artigo, parabéns!!!
O artigo foi útil, obrigado. :)
Muito legal!
Finalmente achei um site que tenha tutos mais interessantes!
Para todo lugar que eu vou vejo: criando sistema de login, contador de visitas, comentarios… argh! Já não aguentava mais a mesma coisa uhsauhasuhsa
Vlws ae e continue postando mais tutos para nós =D
O xdebug tem umas opções muito boas pra fazer isso, fornecendo inclusive mais informações.
http://www.xdebug.org/
Eu fiz um resuminho que sempre uso pros meus projetos: http://www.eltonminetto.net/xdebug.htm (sei que é cara-de-pau fazer propaganda do blog pessoal em comentários hehehe)
seguinte…
testei esse codigo na minha local…
o mktime foi perfeitamente porem a $_SERVER['REQUEST_TIME'] voltou com valor nulo,
gostaria de saber pq…
tem outra…
a 1° vez q teste deu erro pq demoro mais d 30 segs
depois foi normal e rapidinho,
obrigado
Aqui acho que ficou com problema … Quando coloco este script, a página demora cerca de 10 / 15 segundos pra carregar :|
bah este código faz a paǵina demorar muito para carregar (11s)
e com este código demorou menos (0.0001s)
<?
//- Variavel Inicio
$t_start = array_sum(explode(' ', microtime()));
$exec_time = array_sum(explode(' ', microtime())) – $t_start;
$exec_time1 = (ceil($exec_time * 10000))/10000;
//- Variavel Fim
//- Codigo Inicio
print"Tempo de Execucao: $exec_time1 sec.";
//- Codigo Fim
?>
Anderson e TopTec.net.br é lógico que o código demora é porque vocês provavelmente esqueceram de remover o LOOP do FOR, o código só possui uma falha foi usado mktime ao invez de time, recomendo usar time.
legal, vlw funçao legal,
se vcs querem q a pagina demora user o
<?php
sleep(5);
?>
ele vai demora 5 segundos
php full