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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> полный стек вызовов 
:(
    Опции темы
bars80080
Дата 6.6.2017, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Добрый день, озаботился в последнее время отладкой.

суть ситуации:

есть крупный самописный (не на CMS) проект на php, который весь и за год не переберёшь. написан чрезвычайно разношёрстно и в полном беспорядке. как следствие, изрядно тормозит.
есть желание выявить узлы, требующие оптимизации.

если б речь касалась только работы с БД, то тут как раз проблем нет, так как всё идёт через пару классов, выявить объём запросов труда не составит. но как быть с многочисленными вызовами функций и методов, а также с накоплением в памяти большого объёма данных на одном процессе?

к примеру, знаю одно место, где происходит создание объекта в цикле. причём объект вообще-то при работе с ним ресурсозатратен. выбирает большие массивы данных из БД. но он же их в себе потом и хранит, так что вынос его за цикл и изменение методики его использования существенно облегчит нагрузку на сервер.
как допустим выловить именно такой момент? выявить количество создаваемых объектов с одного класса или выявить количество вызовов одного и того же метода?
причём, заранее не зная какой класс отлаживать.

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

сейчас смотрю xdebug и monolog, но пока не вижу чем они могут мне помочь. первый вроде как требуется устанавливать железно и запускается для всего проекта сразу, что никак нельзя допустить (загнёмся). надеюсь, ошибаюсь. второй вроде как ловит только ошибки, а нужно выявить затратные функции и многочисленные вызовы.

было бы прикольно, к примеру, если бы в php существовала предустановленный метод вроде set_error_handler, который позволяет все ошибки пропускать через свою функцию, но только чтобы вызывалась на запуск любой функции и метода без необходимости дописать его в 100 тысяч методов.


в общем, вопрос:
на что бы вы посоветовали обратить внимание?
PM MAIL WWW   Вверх
Vardoulacha
Дата 6.6.2017, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Для таких задач есть xhprof, легкий аналог xdebug можно запускать (мы такое делали) прямо на продакшене, ничего не загнется.

Но есть минус, он не работает для версии PHP 7 ((
PM MAIL   Вверх
bars80080
Дата 6.6.2017, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



окей, спасибо. почитаем
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1077 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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