并行调试 - xdebug和phpstorm

Mar*_*łek 1 php debugging remote-debugging xdebug phpstorm

我尝试做并行调试.我用frontend.php和backend.php文件使用PhpStorm调试教程(大约30分钟或更长时间):

frontend.php文件:

<?php

$personJson = file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');
$person = json_decode($personJson);

var_dump($person);
Run Code Online (Sandbox Code Playgroud)

backend.php文件:

<?php

class Person {
    public $name;
    public $email;
}

$person = new Person();

$person->name = 'Something';
$person->email = 'something@something.com';

echo json_encode($person);
Run Code Online (Sandbox Code Playgroud)

我使用零配置方法.当我在带有调试会话的浏览器中启动前端文件时,在PhpStorm调试会话正在启动但我无法排队:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php');
Run Code Online (Sandbox Code Playgroud)

转到backend.php教程中的文件(视频中的31:36).

问题:如何使其正常工作?在这个视频中没有更多,似乎它应该立即工作,但事实并非如此.

我从phpinfo中包含了我的xdebug配置 来自phpinfo的xdebug配置 和PhpStorm中的xdebug配置 PhpStorm中的xdebug配置

Laz*_*One 5

1. Settings | PHP | Debug | Max simultaneous connections - 应该超过1.你已经设置好了.

2. xdebug.remote_autostart应该是1/ on.这将告诉xdebug尝试调试每个请求,而不管调试cookie /参数如何.

这是必需的,因为您的第二个脚本将不会收到与原始脚本相同的cookie /参数(因为它是技术上独立的请求).

是的,这个选项可能不方便日常开发,因为它会尝试调试每个请求,如果调试客户端不可用......你会看到脚本执行延迟大约1秒.

替代方法(在您的特定情况下)将?XDEBUG_SESSION_START=1在调用第二个脚本时将xdebug GET参数(例如)添加到URL中.这将告诉xdebug调试此请求.例如:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php?XDEBUG_SESSION_START=1');
Run Code Online (Sandbox Code Playgroud)

如您所见,此方法需要修改您的代码(请求的URL).通常这不是必需的.

另一种方法是通过添加以编程方式设置断点xdebug_break();.即使没有那些额外的参数/ cookie或remote_autostart设置,这也应该触发调试器.

缺点是相同的:需要代码操作.好处 - 与更改URL相比应该更容易(+更容易阅读/理解正在发生的事情).