Чтобы использовать данные профилирования XDebug2 в отладке PHP от Ubuntu

StackOverflow https://stackoverflow.com/questions/1284346

Вопрос

Мой вопрос основан на эта статья.

Как вы можете сделать данные профилирования о коде PHP от Xdubug2, а затем поместить их в приложение, такое как Kcachgrind?

Я успешно использовал Xdebug в своей Ubuntu, так как он выделяет мои сообщения об ошибках в браузере. Тем не менее, я не нашел ни одного терминального инструмента, например xdebug.

Я хотел бы иметь визуальный представление о моем коде PHP

alt text

Это было полезно?

Решение

Добавьте эту линию в свой php.ini

xdebug.profiler_enable = 1

Затем, если вам случится запустить PHP через веб -сервер, вам нужно перезагрузить веб -сервер, в противном случае изменение COF не подхватывается.

Если вы запускаете PHP через CLI, то, конечно, не требуется перезапуск.

Теперь, когда вы запускаете свой скрипт PHP, файл cachgrind.out.pid создается в каталоге, указанном xdebug.profiler_output_dir php.ini. Это /tmp по умолчанию.

Эти файлы - тот, который может загружать Kcacharind.

Есть и другие средства, чтобы вызвать это поколение профиля, вы можете прочитать о них в http://www.xdebug.org/docs/all_settings#profiler_enable

Другие советы

Взгляните на веб -гринд (http://code.google.com/p/webgrind/)

Я столкнулся с аналогичной ситуацией, когда у меня был доступ только к терминалу, а не визуальной среде, в которую можно проверить. Хуже того, я использовал машину Windows и замазку.

Доступные решения

  1. Установка WebGrind (http://code.google.com/p/webgrind/)
  2. Запуск XDebug и копирование файлов cachgrind.out на машину, где у вас есть Cachrind Viewer.

Для меня ответом было то, чтобы SCP Cachgrind Files на мою локальную машину Windows и использование Wincachrind, чтобы посмотреть на них. Вы можете переоценить их на своем ящике Linux и запустить Kcachergind в файлах. Недостатком этого является то, что у вас может не быть такой же структуры файла, поэтому вы не сможете просматривать SourceCode. Если у вас есть источник также на вашей локальной машине, или вы можете получить его туда, вы тоже можете это исправить. Откройте файлы Cachergind в VIM (или другой редактор) и выполните глобальный поиск и замените пути, чтобы изменить их на правильный путь источника на вашей локальной машине.

Я надеюсь, что это то, что вы искали.

Редактировать для решения комментариев:

Если вы работаете, чтобы получить файл Callgrind, который несколько отличается. Для этого вам нужно работать в Linux (который, я думаю, вы) и иметь доступны программы Callgrind и Valgrind. Последнее, что нужно предположить здесь, это то, что вы используете PHP как мод Apache, а не в каком -то ином виде. Используйте инструмент Callgrind против начала Apache, а затем запустите запрос в браузере. Это даст вам подробную информацию не только на дереве вызова PHP, но и во многих вещах в Apache, которая может вызвать проблемы.

Вот пример

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/httpd -X

-X запустит Apache в режиме отладки только с одним потоком. Отсюда откройте веб -браузер и нажмите сценарий PHP, который вы хотите. Затем вернитесь назад и выключите Apache. Это также должно положить конец образу Callgrind.

Если вам не нужен Apache или веб -браузер, вы можете попробовать запустить Callgrind только с помощью команды PHP

sudo callgrind --dump-instr=yes --trace-jump=yes -v /usr/sbin/php my_php_script.php

Это должно дать вам одинаковые результаты, но без всех вещей Apache.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top