Php е по-бавен с активиран XDebug, но не се изпълнява сесия за отстраняване на грешки

Просто се натъквам на странен проблем. Може би проблем с XDebug.

Току-що конфигурирах XDebug за първи път в моята среда за разработка, работи добре, използвам PhpStorm и интегрираната IDE, за да тествам кода си, добре е.

Проблемът всъщност е, когато не използвам режима за отстраняване на грешки, например, ако започна да отстранявам грешки и след това спра процеса на отстраняване на грешки, моят PHP скрипт ще стане по-бавен, около 5/8 секунди до покажете дума за здравей. (но с известна логика зад), докато отнема по-малко от една секунда при работещ режим за отстраняване на грешки.

php.ini

zend_extension = "c:\wamp\bin\php\php5.4.12\ext\php_xdebug-2.2.3-5.4-vc9-x86_64.dll"

[xdebug]
xdebug.remote_autostart = 0
xdebug.remote_enable = 1
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/wamp/tmp"

Зададох автоматичното стартиране на false, за да избегна забавяне, докато не използвам режима XDebug. Но след като го стартирах, трябва да съм в режим на отстраняване на грешки, за да използвам "бързия режим".

Някаква идея защо?

Прочетох някои теми като ще активира ли XDebug на производствен сървър да направи PHP по-бавен? и един от отговорите изглежда е за това.

Направих някои тестове, просто активирайки модула, без действително отстраняване на грешки, забавя заявка на моята машина за разработка от 1 секунда до около 4 секунди


person Vadorequest    schedule 09.03.2014    source източник
comment
Имах подобни проблеми с chrome, ако бисквитката XDEBUG_SESSION е зададена и отстраняването на грешки не се изпълнява, chrome ще спре за няколко секунди до няколко минути, преди да получи данни от IIS. Влияе също на нормалното сърфиране и ajax заявките.   -  person diynevala    schedule 13.05.2015


Отговори (1)


Вероятно е вашият профильор,

xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = off

От ръководството

xdebug.profiler_enable_trigger
Type: integer, Default value: 0
When this setting is set to 1, you can trigger the generation of profiler files by using the XDEBUG_PROFILE GET/POST parameter, or set a cookie with the name XDEBUG_PROFILE. This will then write the profiler data to defined directory. In order to prevent the profiler to generate profile files for each request, you need to set xdebug.profiler_enable to 0.

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

Дебъгерът най-много ще се опита да отвори сокет. Той позволява заявки от GET POST и COOKIE. и когато се свържете, той задава бисквитка за 1 час по подразбиране, което кара програмата за отстраняване на грешки да се опитва и да се свързва към порт всеки път, когато поискате след 1 час

person exussum    schedule 09.03.2014
comment
Благодаря, това беше. Мислех, че това е необходимо и на XDebug. Написах ~1Go от данни в c:/wamp/tmp, разбирам по-добре защо беше бавно... - person Vadorequest; 09.03.2014