2017-05-12 78 views
2

如果请求是从网络工作者内部开始的,Xdebug是否可能不会停在断点处? 我正在做一个fetch()请求。Xdebug不停止,如果从网络工作者使用?

fetch(datatable_instance_defaults.pathToSqlFile + 'returnSqlRes.php', 
    { 
     headers: { 
      'Accept': 'text/plain', 
      'Content-Type': 'application/x-www-form-urlencoded' 
     }, 
     method: "post", 
     body: JSON.stringify(sql) 
    }) 
    .then(function (res) { 
     return res.json(); 
    }) 
+1

如何启用请求使用xdebug?你使用GET参数XDEBUG_SESSION_START还是使用像easyXdebug这样的浏览器扩展? –

+0

作为@KevinDitscheid说 - 要么传递“调试这个”标记(cookie或GET/POST参数),以便xdebug知道它应该调试此请求....或配置xdebug试图调试每个请求('xdebug。 remote_autostart = 1'在你的php.ini中)。 – LazyOne

+0

我使用浏览器扩展。谢谢LazyOne,虐待它@home导致它的一个副项目,我有... –

回答

3

由于网络的工人API有根据DedicatedWorkerGlobalScope您Xdebug的会话cookie无法沿着服务器传递到会话存储不能访问,这样就不会从主线程识别您打开Xdebug的会议。

您可以临时将XDEBUG_SESSION_START GET参数添加到您的URL以启动新的Xdebug会话。 (见的XDebug的the documentation,太)

fetch(datatable_instance_defaults.pathToSqlFile + 'returnSqlRes.php?XDEBUG_SESSION_START=session_name', 

这是一个有点不方便做这种方式,但我想,插件开发者需要想出一个办法来保持Xdebug的会话或重新启动它的服务 - 工人请求。