Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отследить время работы функций? 
:(
    Опции темы
1234ru
  Дата 5.3.2010, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 26.8.2007

Репутация: -1
Всего: -1



Хочется иметь время работы всех функций, задействованных в скрипте. Чтобы всё это выводилось на экран - например, в виде

функция 1: время (сек)
функция 2: время (сек)
...

Можно ли это реализовать встроенными средствами PHP, но так, чтобы информация о работе функции собиралась автоматически (т.е. используя что-то типа debug_backtrace() ), а не чтобы в самой функции или вокруг неё писать $start = microtime(1) и т.п.

Слышал, что есть debug-пакеты, которые это могут. Хотел бы, однако, обойтись без них, т.к. кроме времени выполнения (ну и, пожалуй, использования памяти) мне ничего не нужно, поэтому не хочется из пушки по воробьям..

Это сообщение отредактировал(а) 1234ru - 5.3.2010, 00:27
PM MAIL   Вверх
bars80080
Дата 5.3.2010, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



дык, напиши простенькую функцию, которая будет собирать время в момент вызова, а в конце скрипта логировать данные.
тогда всё сведётся к расстановке тех же чекпоинтов в виде функций
PM MAIL WWW   Вверх
1234ru
Дата 5.3.2010, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 26.8.2007

Репутация: -1
Всего: -1



Цитата
напиши простенькую функцию, которая будет собирать время в момент вызова


А как это сделать так, чтобы это не надо было около каждой функции указывать?
Вообще какие есть способы сбора времени работы функции кроме

Код
$start = microtime(1);
... (выполняется код)
$end = microtime(1);
$time = $end - $start;


?
PM MAIL   Вверх
Sentox
Дата 5.3.2010, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



xDebug как вариант
PM MAIL   Вверх
IgorIV
Дата 5.3.2010, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Вот функция, собирает временные отметки.
Код

        function time_page ($phpfile)
        {
            // $phpfile - в общем виде это название файла, но может быть и названием какой-либо метки, в частности - "all"
            
            global $ptime;

                $ptime[$phpfile][] = microtime (true); 
  
        }

Дальше сам разберешся.

Это сообщение отредактировал(а) IgorIV - 5.3.2010, 19:36
PM MAIL   Вверх
awers
Дата 5.3.2010, 21:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



IgorIV, попрошу smile Давайте без индусских способов smile


1234ru, напиши профайлер. Однако без постоянных вызовов функции аля "Profiler::start(__CLASS__.'/'.__FUNCTION__);" на мой взгляд не обойтись. 
PM MAIL WWW ICQ Skype   Вверх
IgorIV
Дата 5.3.2010, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



awers, где???
PM MAIL   Вверх
1234ru
Дата 5.3.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 26.8.2007

Репутация: -1
Всего: -1



Цитата
днако без постоянных вызовов функции аля "Profiler::start(__CLASS__.'/'.__FUNCTION__);" на мой взгляд не обойтись.

Вот как раз этого я и хотел избежать (т.е. чтобы не надо было профайлер пинать перед каждом вызовом функции).
Я надеялся (правда, довольно слабо), что есть что-то такое встроенное, что само (ну или хотя бы если попросить) собирает информацию о выполнении программы, но я просто об этом не знаю, потому что не смог найти.
Видать, такого нет.

В общем, ситуация ясна. Всем спасибо.
PM MAIL   Вверх
skyboy
Дата 6.3.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(awers @  5.3.2010,  20:41 Найти цитируемый пост)
на мой взгляд не обойтись

я встречал профайлер, который использовал register_tick_function. суровые РНР-программисты... да, шокирует. но тем не менее.

Добавлено через 2 минуты и 19 секунд
кажется, вот он.
PM MAIL   Вверх
Fortop
Дата 6.3.2010, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(1234ru @  5.3.2010,  22:00 Найти цитируемый пост)
что есть что-то такое встроенное,

тебе уже сказали xdebug.
Так же профайлер есть в ZendStudio, и NuSphere.

Плюс, если я правильно помню APD так же может профилировать скрипты.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Zmiuko
Дата 6.3.2010, 05:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



У меня, кстате вопрос по топику, но не касающийся времени генерации функции.
Допустим, чтобы вывести имена всех работающих в скрипте функций и переменных, просто имена. Это возможно? Или решение как введение лишней переменной содержащей имя конкретной функции и последующий вызов суммированных имен в конце скрипта?
PM MAIL WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0932 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.