Windows localhost

时间:2017-07-22 20:00:54

标签: php phpstorm xdebug xdebug-profiler

我很难将xdebug性能分析工作并整合到2017年的PhpStorm中。我试图关注this video但没有成功。

我知道xdebug已正确安装在Web服务器上(Windows安装上的本地Apache)并正确集成到PhpStorm中,因为当我在IDE中单击“开始侦听PHP调试连接”时,我的断点停止代码执行,我可以调试就好了。我只是无法让探查器生成其文件,我甚至不知道它是否在运行。

的php.ini

<!-- language: lang-none -->
[xdebug]
zend_extension="php_xdebug-2.5.5-5.6-vc11.dll"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
; xdebug.profiler_enable=1          ; I've tried uncommenting. Made no difference
; xdebug.profiler_enable_trigger=1  ; I've tried uncommenting. Made no difference
xdebug.profiler_output_dir="C:\websites\tmp"
xdebug.profiler_output_name="cachegrind.out.%p"
xdebug.idekey=PHPSTORM

在PHP执行开始时,我试图打开这样的分析:

ini_set('xdebug.profiler_enable','1');

我还尝试使用以下命令从命令行运行脚本:

php script.php -d xdebug.profiler_enable=1

没有出现错误。 C:\websites\tmp中也没有创建文件。

我遇到了easiest Xdebug扩展名,但如果可以避免的话,我宁愿不依赖另一个软件(我甚至没有尝试过它以确定它是否可行)。< / p>

  • PHP 5.6
  • Apache 2.4
  • xdebug 2.5.5
  • PhpStorm 2017
  • Windows 7 64位

更新

我了解了xdebug.remote_log ini指令并将其设置为文件,然后重新启动了Apache。这是我在日志中看到的,当我运行正常的调试会话时(意味着我在PhpStorm中点击了“开始收听PHP调试连接”):

<!-- language: lang-none -->
Log opened at 2017-07-22 20:33:03
I: Connecting to configured address/port: localhost:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" 
         xmlns:xdebug="http://xdebug.org/dbgp/xdebug" 
         fileuri="file:///C:/path/to/script.php"...>
   </init>

正如我所说,调试工作正常。现在,如果不监听调试但尝试使用命令行参数php script.php -d xdebug.profiler_enable=1或在带有ini_set('xdebug.profiler_enable','1')的脚本中启用探查器,这就是xdebug日志显示的内容

<!-- language: lang-none -->
Log opened at 2017-07-22 20:38:10
I: Connecting to configured address/port: localhost:9000.
E: Time-out connecting to client. :-(
Log closed at 2017-07-22 20:38:11

更新2

我只能生成探查器的 cachegrind.out 文件!我还不知道实现这项工作的确切限制,但我所做的是取消注释我的 php.ini 上面的xdebug.profiler_enable行并重新启动Apache。我仍然需要一种方法来仅按需启用分析器,就像我在顶部链接的视频一样。在 php.ini 中始终使用它会增加太多开销,因为大多数时候我不需要分析器数据

1 个答案:

答案 0 :(得分:0)

这是我的工作解决方案:

php.ini

[Xdebug]
zend_extension=php_xdebug-2.6.0-7.2-vc15.dll
xdebug.default_enable=1
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

httpd.conf:

Listen 127.0.0.1:80

enter image description here

enter image description here

enter image description here