PHP debe rastrear la cantidad de tiempo de CPU que un script en particular ha utilizado para imponer el límite max_execution_time.
¿Hay alguna manera de acceder a esto dentro del script? Me gustaría incluir algunos registros con mis pruebas sobre cuánta CPU se quemó en el PHP real (el tiempo no se incrementa cuando el script está en espera y esperando la base de datos).
Estoy usando una caja de Linux.
php
performance
twk
fuente
fuente
utime
/stime
/ la hora del reloj de pared? ¿Y puede publicar un enlace a un ejemplo reproducible que muestre este comportamiento? ¿En qué versión de OS / php / servidor web estás? En cualquier caso, es posible que desee publicar una nueva pregunta y vincularla aquí.Si todo lo que necesita es el tiempo del reloj de pared, en lugar del tiempo de ejecución de la CPU, entonces es fácil de calcular:
Tenga en cuenta que esto incluirá el tiempo que PHP está sentado esperando recursos externos como discos o bases de datos, que no se usa para max_execution_time.
fuente
Versión más corta de la respuesta de talal7860
Como se señaló, esto es 'tiempo de reloj de pared' no 'tiempo de CPU'
fuente
La forma más fácil:
fuente
60
... No hay diferencia de hecho.fuente
Creé una clase ExecutionTime a partir de una respuesta phihag que puede usar de fábrica:
uso:
fuente
getrusage
solo funciona desde PHP 7.Gringod en developerfusion.com da esta buena respuesta:
De ( http://www.developerfusion.com/code/2058/determine-execution-time-in-php/ )
fuente
Será más bonito si formatea la salida de segundos como:
imprimirá
Esto es mucho mejor que
fuente
La forma más barata y sucia de hacerlo es simplemente hacer
microtime()
llamadas en los lugares de su código que desea comparar. Hágalo justo antes y después de las consultas de la base de datos y es simple eliminar esas duraciones del resto del tiempo de ejecución de su script.Una sugerencia: su tiempo de ejecución de PHP rara vez será lo que haga que su script se agote. Si un script supera el tiempo de espera, casi siempre será una llamada a un recurso externo.
Documentación PHP microtime: http://us.php.net/microtime
fuente
Creo que deberías mirar xdebug. Las opciones de creación de perfiles le ayudarán a conocer muchos elementos relacionados con el proceso.
http://www.xdebug.org/
fuente
Para mostrar minutos y segundos puedes usar:
fuente
Escribí una función que verifica el tiempo de ejecución restante.
Advertencia: el recuento del tiempo de ejecución es diferente en Windows y en la plataforma Linux.
Utilizando:
fuente
Es posible que solo desee conocer el tiempo de ejecución de partes de su script. La forma más flexible de cronometrar partes o un script completo es crear 3 funciones simples (código de procedimiento que se proporciona aquí, pero puede convertirlo en una clase colocando el temporizador de clase {} a su alrededor y haciendo un par de ajustes). Este código funciona, solo copia y pega y ejecuta:
fuente
$_SERVER['REQUEST_TIME']
mira eso también. es decir
fuente
Como alternativa, puede poner esta línea en sus bloques de código y verificar los registros de php, para funciones realmente lentas es bastante útil:
Para una depuración seria, use XDebug + Cachegrind, consulte https://blog.nexcess.net/2011/01/29/diagnosing-slow-php-execution-with-xdebug-and-kcachegrind/
fuente
Ampliando aún más la respuesta de Hamid, escribí una clase auxiliar que se puede iniciar y detener repetidamente (para perfilar dentro de un bucle).
fuente
return microtime (true) - $ _SERVER ["REQUEST_TIME_FLOAT"];
fuente