基础知识

对于php来说,debug的话,有个东西叫xdebug,当然配置这个时候,特别在mac下出了很多坑,这里强烈推荐一个mac下类似phpstudy的东西,叫做MxSrvs,了解一下?

Xdebug工作原理

1,IDE(如PhpStorm)已经集成了一个遵循BGDP的Xdebug插件,当开启它的时候, 会在本地开一个xdebug调试服务,监听在调试器中所设置的端口上,默认是9000,这个服务就会监听所有到9000端口的链接。在PhpStorm中,位于:工具栏 > Run > Start / Stop Listening for PHP Xdebug Connetions

2,当浏览器发送一个带XDEBUG_SESSION_START的参数的请求到服务器时,服务器接受后将其转到后端的php处理,如果php启了xdebug模块,则会将debug信息转发到客户端IP的IDE的调试端口上。当参数或者cookie信息中不带XDEBUG_SESSION_START,则不会启动调试。这就为后续在浏览器中添加开关提供了可能。Xdebug的官方给出了一个示例图:很好的展示了相互调用关系。

这个示例图是绑定了ip,即使用了固定ip地址,xdebug.remote_connect_back = 0 ,也是 xdebug 的默认方式,这种情况下,xdebug 在收到调试通知时会读取配置 xdebug.remote_host 和 xdebug.remote_port ,默认是 localhost:9000,然后向这个端口发送通知,这种方式只适合单一客户端开发调试。

另外一种方式则是不绑定IP,Xdebug根据请求来源(REMOTE_HOST)来发起调试。示例图如下:

那从用户发起请求到,到IDE的整个流程图如下:

当用户的请求参数或者cookie中不带调试信息,数据流就是浏览器到Apache(或其他web容器)到PHP,如果加上了调试参数,则请求还会由PHP转给Xdebug处理,Xdebug再把信息转发给IDE,完成调试功能。

最新文章

  1. Spark RDD 多文件输入
  2. Visual Studio2013(Update4)无法生成依赖项关系图解决方案
  3. 苹果在Xcode6中弃用segue的push和model
  4. TweenMax动画库学习(六)
  5. widows sever2003 PHP环境搭建
  6. <audio> 标签简介
  7. SendMail如何签名
  8. MySql 如何实现不同数据库同步【2个】
  9. 【深度学习】keras + tensorflow 实现猫和狗图像分类
  10. C Primer Plus 第7章 C控制语句:分支和跳转 编程练习
  11. every循环
  12. android项目生成aar和引用aar解决方案
  13. 项目ITP(七) javaWeb 整合 Quartz 实现动态调度 并且 持久化
  14. 20155324 《Java程序设计》实验一 Java开发环境的熟悉(Windws + IDEA)实验报告
  15. 常用 blas 函数
  16. JS应用实例5:全选、动态添加
  17. c# usercontrol ,networkcomms3.0 Invoke总结
  18. 关于操作Access数据库jdk选择问题
  19. percona-xtrabackup系列一:简单使用
  20. django之创建站点之基本流程

热门文章

  1. Django视图函数之request请求与response响应对象
  2. 就为了一个原子操作,其他CPU核心罢工了
  3. python—day01_环境安装
  4. Java——多线程基础知识
  5. [COCOS2DX-LUA]0-004.cocos2dx中的DrawNode的init的方法问题
  6. MVC案例之模糊查询与删除
  7. FHQ-Treap学习笔记
  8. 【Java8新特性】重复注解与类型注解,你真的学会了吗?
  9. Chisel3 - 运算符和位宽推断
  10. Java实现 蓝桥杯 算法提高 日期计算