PHP должен отслеживать количество процессорного времени, которое конкретный сценарий использовал для обеспечения ограничения max_execution_time.
Есть ли способ получить доступ к этому внутри скрипта? Я хотел бы включить некоторые записи в мои тесты о том, сколько ЦП было сожжено в реальном PHP (время не увеличивается, когда скрипт сидит и ожидает базу данных).
Я использую коробку Linux.
php
performance
TWK
источник
источник
utime
/stime
время часы / стены? И можете ли вы опубликовать ссылку на воспроизводимый пример, который показывает это поведение? На какой версии ОС / php / версии веб-сервера вы находитесь? В любом случае вы можете разместить новый вопрос и ссылку на него здесь.Если все, что вам нужно, это время настенных часов, а не время выполнения процессора, то это легко рассчитать:
Обратите внимание, что это будет включать время ожидания PHP внешних ресурсов, таких как диски или базы данных, которые не используются для max_execution_time.
источник
Укороченная версия ответа talal7860
Как уже отмечалось, это «время настенного часа», а не «время процессора»
источник
Самый простой способ:
источник
60
.. На самом деле нет разницы.источник
Я создал класс ExecutionTime из ответа phihag, который вы можете использовать из коробки:
использование:
источник
getrusage
работает только с PHP 7.Gringod на developerfusion.com дает хороший ответ:
От ( http://www.developerfusion.com/code/2058/determine-execution-time-in-php/ )
источник
Будет лучше, если вы отформатируете выходные данные в виде:
распечатает
Это намного лучше чем
источник
Самый дешевый и самый грязный способ сделать это - просто сделать
microtime()
вызовы в тех местах кода, которые вы хотите сравнить. Сделайте это прямо до и сразу после запросов к базе данных, и просто удалить эти длительности из оставшегося времени выполнения вашего скрипта.Подсказка: ваше время выполнения PHP редко будет тем, что делает ваш сценарий тайм-аутом. Если срок действия сценария истекает, это почти всегда будет вызовом внешнего ресурса.
PHP microtime документация: http://us.php.net/microtime
источник
Я думаю, вы должны посмотреть на xdebug. Параметры профилирования помогут вам узнать многие элементы, связанные с процессом.
http://www.xdebug.org/
источник
Для отображения минут и секунд вы можете использовать:
источник
Я написал функцию, которая проверяет оставшееся время выполнения.
Внимание: подсчет времени выполнения различен на Windows и на платформе Linux.
С помощью:
источник
$_SERVER['REQUEST_TIME']
проверьте это тоже. т.е.
источник
$_SERVER['REQUEST_TIME']
также доступно в php-cli (там, где нет сервера)Возможно, вы захотите узнать только время выполнения частей вашего скрипта. Самый гибкий способ для синхронизации частей или всего скрипта - это создание 3 простых функций (здесь приведен процедурный код, но вы можете превратить его в класс, поместив вокруг него таймер класса {} и сделав пару настроек). Этот код работает, просто скопируйте, вставьте и запустите:
источник
В качестве альтернативы вы можете просто поместить эту строку в свои блоки кода и проверить логи php, для действительно медленных функций это довольно полезно:
Для серьезной отладки используйте XDebug + Cachegrind, см. Https://blog.nexcess.net/2011/01/29/diagnosing-slow-php-execution-with-xdebug-and-kcachegrind/
источник
Более подробно остановившись на ответе Хамида, я написал вспомогательный класс, который можно запускать и останавливать несколько раз (для профилирования внутри цикла).
источник
вернуть микротайм (true) - $ _SERVER ["REQUEST_TIME_FLOAT"];
источник