Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
并行调试-xdebug和phpstorm_Php_Debugging_Xdebug_Phpstorm_Remote Debugging - Fatal编程技术网

并行调试-xdebug和phpstorm

并行调试-xdebug和phpstorm,php,debugging,xdebug,phpstorm,remote-debugging,Php,Debugging,Xdebug,Phpstorm,Remote Debugging,我尝试进行并行调试。我对frontend.php和backend.php文件使用(大约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); <?php c

我尝试进行并行调试。我对frontend.php和backend.php文件使用(大约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);
<?php

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

$person = new Person();

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

echo json_encode($person);
转到教程中的
backend.php
文件(视频中的31:36)

问题:如何让它工作?在这段视频中,没有什么了,它似乎应该马上工作,但它没有


我将phpinfo中的xdebug配置和PhpStorm中的xdebug配置包括在内。
设置| PHP |调试|最大同时连接数
--应大于1。你已经准备好了

2.
xdebug.remote\u autostart
应该是
1
/
开启的。这将告诉xdebug尝试调试每个请求,而不考虑调试cookie/参数

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

是的,此选项可能不便于日常开发,因为它将尝试调试每个请求,如果调试客户端不可用。。。您将看到脚本执行延迟约1秒

另一种方法是在调用第二个脚本时,将xdebug GET参数(例如
?xdebug_SESSION_START=1
)添加到URL中。这将告诉xdebug调试此请求。例如:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php?XDEBUG_SESSION_START=1');
正如您所见,这种方法需要修改您的代码(请求的URL)。这通常是不可取的

另一种选择是通过添加
xdebug_break()以编程方式设置断点。即使没有这些额外的参数/cookie或
remote\u autostart
设置,也会触发调试器


缺点是一样的:代码操作是必需的。好的一点是,与更改URL相比,它应该更容易操作(+更容易阅读/理解正在发生的事情)。

1。
Settings | PHP | Debug | Max synchronized connections
应该大于1。你已经准备好了

2.
xdebug.remote\u autostart
应该是
1
/
开启的。这将告诉xdebug尝试调试每个请求,而不考虑调试cookie/参数

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

是的,此选项可能不便于日常开发,因为它将尝试调试每个请求,如果调试客户端不可用。。。您将看到脚本执行延迟约1秒

另一种方法是在调用第二个脚本时,将xdebug GET参数(例如
?xdebug_SESSION_START=1
)添加到URL中。这将告诉xdebug调试此请求。例如:

file_get_contents('http://localhost:777/projects/debug-both/backend.php/backend.php?XDEBUG_SESSION_START=1');
正如您所见,这种方法需要修改您的代码(请求的URL)。这通常是不可取的

另一种选择是通过添加
xdebug_break()以编程方式设置断点。即使没有这些额外的参数/cookie或
remote\u autostart
设置,也会触发调试器


缺点是一样的:代码操作是必需的。好的一点是,与更改URL相比,这应该更容易做到(+更容易阅读/理解正在发生的事情)。

。。您正试图同时调试多个请求(第一个脚本调用第二个,您也想调试它)。对吗?如果是的话——显示您的xdebug设置(phpinfo()输出的xdebug部分)以及“settings | PHP | Debug”的屏幕截图@LazyOne感谢您的关注。这正是我想要实现的。我在问题中添加了截图,所以。。您正试图同时调试多个请求(第一个脚本调用第二个,您也想调试它)。对吗?如果是的话——显示您的xdebug设置(phpinfo()输出的xdebug部分)以及“settings | PHP | Debug”的屏幕截图@LazyOne感谢您的关注。这正是我想要实现的。我在问题中添加了截图,非常感谢您提供了非常详细的答案。就我而言,更改xdebug.remote_autostart是我所需要的。非常感谢您提供非常详细的答案。就我而言,更改xdebug.remote_autostart是我所需要的。