Использовать данные профилирования Xdebug2 при отладке PHP в Ubuntu
Мой вопрос основан на этой статье.
Как вы можете создать данные профилирования для PHP-кода с помощью Xdubug2 и затем поместить их в такое приложение, как KCacheGrind?
Я успешно использовал Xdebug в своем Ubuntu, так как он выделяет мои сообщения об ошибках в браузере. Тем не менее, я не нашел никакого терминального инструмента, как xdebug
,
Я хотел бы иметь визуальное представление моего кода PHP, как это
3 ответа
Добавьте эту строку в ваш php.ini
xdebug.profiler_enable = 1
Затем, если вам случится запустить PHP через веб-сервер, вам нужно перезапустить веб-сервер, иначе изменение конфигурации не будет обнаружено.
Если вы используете PHP через cli, перезагрузка, конечно, не требуется.
Теперь, когда вы запускаете свой PHP-скрипт, файл cachegrind.out.PID создается в каталоге, заданном параметром php.ini xdebug.profiler_output_dir. По умолчанию это / tmp.
Это файлы, которые kcachegrind может загрузить.
Есть и другие способы вызвать это поколение профилей, вы можете прочитать о них на http://www.xdebug.org/docs/all_settings
Я столкнулся с подобной ситуацией, когда у меня был только доступ к терминалу, а не визуальная среда для тестирования. Еще хуже, я использовал Windows-машину и Putty.
Доступные решения:
- Установка WebGrind ( http://code.google.com/p/webgrind/)
- Запустите Xdebug и скопируйте файлы cachegrind.out на компьютер, на котором у вас есть средство просмотра cachegrind.
Для меня ответом было SCP-файлы cachegrind на мой локальный компьютер с Windows и использование WinCachegrind для их просмотра. Вы можете отправить их на свой Linux-бокс и запустить KCacheGrind для файлов. Недостатком этого является то, что у вас может не быть одинаковой файловой структуры, поэтому вы не сможете просматривать исходный код. Если у вас есть источник на локальном компьютере, или вы можете получить его там, вы можете это исправить. Откройте файлы cachegrind в 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.