Почему Xdebug вешает сервер, если нет слушателя?

Работаю под виндой. Сервер находится на виртуалке. Используется xdebug очень часто, поэтому настроен на постоянную работу:
zend_extension=/usr/local/php-5.3.15/lib/php/xdebug.so
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.remote_enable=1
xdebug.remote_host=192.168.56.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1
xdebug.remote_connect_back=0

Открываю PhpStorm, запускаю прослушку соединений на порту 9000. Всё нормально работает. Запускаю приложение и отлаживаю. Проблема появляется если закрыть PhpStorm или отключить прослушку. При запуске приложения xdebug стучится на порт 9000 в надежде найти слушателя. Windows в отличии от Linux'ов не даёт ответа, что порт не открыт и весь скрипт висит несколько секунд, пока xdebug не поверит, что слушателя нет.
Есть ли возможность решить эту проблему? Может какой-то промежуточный слушатель на винде, который будет передавать запрос на другой порт основному слушателю или давать отрицательный ответ xdebug'у в случае, если основного слушателя нет?
  • Вопрос задан
  • 3046 просмотров
Решения вопроса 1
Webtoucher
@Webtoucher Автор вопроса
Собственно, решил проблему сам. На помощь приходит DBGp прокси. Качаем Python Remote Debugging Client. Причём, куда именно вы будете ставить прокси, зависит от вашего сервера. Если это виртуалка, которая стучится на вашу систему через NAT, то ставить прокси на неё не очень разумно. Затруднительно будет настроить отладку для нескольких IDE. Все входящие соединения будут приходить с ip 127.0.0.1, что не позволит прокси верно определять, на какой IDE перенаправлять обратные запросы. В таком случае качаем версию для Windows и разворачиваем на нём. Для реальных серверов прекрасно подойдёт линуксовая версия.
Ну и конфигурацию желательно поправить:
xdebug.remote_autostart=0
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы