PHP doit suivre la quantité de temps CPU qu'un script particulier a utilisé afin d'appliquer la limite max_execution_time.
Existe-t-il un moyen d'accéder à cela à l'intérieur du script? Je voudrais inclure une journalisation avec mes tests sur la quantité de CPU brûlée dans le PHP réel (le temps n'est pas incrémenté lorsque le script est assis et attend la base de données).
J'utilise une box Linux.
php
performance
twk
la source
la source
utime
/stime
/? Et pouvez-vous publier un lien vers un exemple reproductible qui montre ce comportement? Sur quelle version OS / php / version webserver êtes-vous? Dans tous les cas, vous voudrez peut-être publier une nouvelle question et un lien vers celle-ci ici.Si tout ce dont vous avez besoin est le temps d'horloge murale, plutôt que le temps d'exécution du CPU, alors il est simple de calculer:
Notez que cela inclura le temps pendant lequel PHP est assis à attendre des ressources externes telles que des disques ou des bases de données, qui n'est pas utilisé pour max_execution_time.
la source
Version plus courte de la réponse de talal7860
Comme indiqué, il s'agit du «temps d'horloge murale» et non du «temps processeur»
la source
La façon la plus simple:
la source
60
.. Aucune différence en effet.la source
J'ai créé une classe ExecutionTime à partir de la réponse phihag que vous pouvez utiliser hors de la boîte:
usage:
la source
getrusage
ne fonctionne que depuis PHP 7.Gringod sur developerfusion.com donne cette bonne réponse:
Depuis ( http://www.developerfusion.com/code/2058/determine-execution-time-in-php/ )
la source
Cela va être plus joli si vous formatez la sortie des secondes comme:
imprimera
C'est bien mieux que
la source
La façon la moins chère et la plus sale de le faire est simplement de passer des
microtime()
appels aux endroits de votre code que vous souhaitez comparer. Faites-le juste avant et juste après les requêtes de base de données et il est simple de supprimer ces durées du reste du temps d'exécution de votre script.Un conseil: votre temps d'exécution PHP va rarement être la chose qui fait expirer votre script. Si un script arrive à expiration, il s'agit presque toujours d'un appel à une ressource externe.
Documentation PHP microtime: http://us.php.net/microtime
la source
Je pense que vous devriez regarder xdebug. Les options de profilage vous donneront une longueur d'avance pour connaître de nombreux éléments liés au processus.
http://www.xdebug.org/
la source
Pour afficher les minutes et les secondes, vous pouvez utiliser:
la source
J'ai écrit une fonction qui vérifie le temps d'exécution restant.
Avertissement: le comptage du temps d'exécution est différent sur Windows et sur la plate-forme Linux.
En utilisant:
la source
$_SERVER['REQUEST_TIME']
vérifiez cela aussi. c'est à dire
la source
$_SERVER['REQUEST_TIME']
est également disponible dans php-cli (où il n'y a pas de serveur)Vous voudrez peut-être seulement connaître le temps d'exécution de certaines parties de votre script. La façon la plus flexible de chronométrer des parties ou un script entier est de créer 3 fonctions simples (code procédural donné ici mais vous pouvez le transformer en classe en mettant autour de lui le minuteur de classe {} et en faisant quelques ajustements). Ce code fonctionne, il suffit de copier-coller et d'exécuter:
la source
Comme alternative, vous pouvez simplement mettre cette ligne dans vos blocs de code et vérifier les journaux php, pour les fonctions vraiment lentes, c'est assez utile:
Pour un débogage sérieux, utilisez XDebug + Cachegrind, voir https://blog.nexcess.net/2011/01/29/diagnosing-slow-php-execution-with-xdebug-and-kcachegrind/
la source
Développant davantage la réponse de Hamid, j'ai écrit une classe d'aide qui peut être démarrée et arrêtée à plusieurs reprises (pour le profilage dans une boucle).
la source
return microtime (true) - $ _SERVER ["REQUEST_TIME_FLOAT"];
la source