2010-11-11 4 views
2

Справа, так как смотрю Rasmus Lerdorf's talk on PHP performance Я хотел бы профилировать приложение ERP/Accounting, над которым я работаю, не в последнюю очередь потому, что я знаю, что с ним возникают проблемы с производительностью, профилирование должно подчеркивать основные проблемы для меня, чтобы расследовать.xdebug, проблема с профилировщиком

Так скачал xdebug и поставить следующие несколько строк в моем php.ini файле:

zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so" 
xdebug.profiler_output_dir="/home/me/xdebug/profiles/" 
xdebug.ptofiler_enable_trigger=On 

С этим я просто прицелиться мой браузер, как мое приложение с &XDEBUG_PROFILE в строке запроса и начинает профилирование. Проблема заключается в том, что вывод, который я просматриваю с помощью KCacheGrind, не включает в себя какие-либо функции из моего приложения и отсутствие потока между объектами.

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

Может ли кто-нибудь сказать мне, почему полный профиль не выводится? Глядя на размеры файлов моих скопированных файлов, кажется, что первые несколько довольно большие, но последний значительно меньше, xdebug возится с ними после того, как он был захвачен?

Большое спасибо :-)

EDIT

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

alt text

И это то, что я получаю от конечного профиля, без каких-либо отношений, просто набор PHP функций. Я хочу увидеть весь полный профиль.

alt text

EDIT 2

Так вот я постоянно работает команда ls -als, последний список урезанная версия, предыдущий последний ls где файл был на его полном размер.

alt text

Я не могу загрузить большой файл, как это длинно более 3 млн строк, если это помогает здесь является информация раздел xdebug PHP.

alt text

+0

вы могли бы рассмотреть другой метод: http://stackoverflow.com/questions/3756446/making-php-performance-profiling-predictable/3756929#3756929 –

+0

Ссылка кажется быть сломанным, это видео, на которое вы ссылались? https://vimeo.com/13768954 – Flimm

ответ

2

Да, я на самом деле решил проблему сам, я добавил эту опцию в мой php.ini файл:

xdebug.profiler_append=1 

Это добавит данные в то же имя файла, если он существует, поэтому Мне нужно убедиться, что параметр filename установлен правильно, но я думаю, что на данный момент я решил проблему.

Благодаря тем, что ответили :-)

+3

Я рекомендую что-то вроде 'xdebug.profiler_output_name =" cachegrind.out.% t.% R "' для параметра имени файла. Это временная отметка имени файла, обеспечивающая создание уникального для каждого сеанса профилирования и позволяет сортировать по времени. Он также включает в себя запрос URI, который помогает вам различать следы. (Хотя я помню кое-что о необходимости играть с опцией 'register_long_arrays', прежде чем'% R' будет работать в некоторой версии xdebug или другой.) – aib

+1

Cheers aib: -) –

Смежные вопросы