重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关Swoole 中怎么使用 Xdebug实现单步调试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
创新互联成立于2013年,先为商城等服务建站,商城等地企业,进行企业商务咨询服务。为商城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
先说一下如何安装 Sdebug
为了避免 Swoole 的检测 Xdebug 警告,所以扩展注册的名称是 Sdebug
git clone git@github.com:swoole/sdebug.git -b sdebug_2_9 --depth=1 cd sdebug phpize ./configure make clean make make install
步骤很简单,就是 clone 源码,进入目录然后编译
如果你的 PHP 是通用安装,没有修改默认位置等等,也可以直接运行目录下的脚本:
./rebuild.sh
如果你的 phpize 不是默认路径的话,请使用绝对路径;同样的 php-config 需要使用--with-php-config=
加上你的绝对路径
编译成功后需要在 php.ini 加载扩展
zend_extension=xdebug.so
编译完成后生成的 so 文件名还是 xdebug
查看是否加载成功
php --ri sdebug
别走,还没完,还需要一些其他的配置,不然你去断点会发现不起作用
我们还需要在 php.ini 中加入这几个配置项
xdebug.remote_enable=1 xdebug.remote_autostart=1 xdebug.remote_host=localhost xdebug.remote_port=8000 xdebug.idekey="xdebug"
一个配置难倒英雄汉,很多人在使用 Sdebug 的时候就会遇到需要这样问题,不起作用,就吐槽不好用,实际上是你的姿势不对,配置项没加或者加错了
需要配合 PhpStorm 的话,还需要设置一下 PhpStorm 的配置
Preferences | Languages & Frameworks | PHP | Debug
1 是为了我们不加断点的时候,自动给第一行断点
2 是修改配置的remote_port
端口
Preferences | Languages & Frameworks | PHP | Servers
添加一个服务
紧接着在右上角这里添加一个调试,选择 PHP Remote Debug
server 选择我们刚才创建的 server,IDE key 就填我们 php.ini 中配置的xdebug
然后我们来试验一波,看看好不好使
先来一个简单的 TCP Server
//创建Server对象,监听 127.0.0.1:9501 端口$server = new Swoole\Server('127.0.0.1', 9501);//监听连接进入事件$server->on('Connect', function ($server, $fd) { echo "Client: Connect.\n"; });//监听数据接收事件$server->on('Receive', function ($server, $fd, $from_id, $data) { var_dump($data); $server->send($fd, "Server: " . $data); });//监听连接关闭事件$server->on('Close', function ($server, $fd) { echo "Client: Close.\n"; });//启动服务器$server->start();
点击右上角的绿色虫子进入 Debug 状态,启动我们的服务,会发现自动断在了第 4 行创建 Server 对象的地方
然后下一步下一步...
start 之后我们使用 telnet 进行连接,发送一个消息,断点就进入到 Connect 这里,然后我们再下一步,终端才会输出Connect
紧接着我们会到 var_dump 的地方,就可以看到$data 的值是11111\r\n
然后来一个 HTTP Server
$http = new Swoole\Http\Server('0.0.0.0', 9501); $http->on('request', function ($request, $response) { var_dump($request->server); $response->header("Content-Type", "text/html; charset=utf-8"); $response->end("Hello Swoole. #".rand(1000, 9999)."
"); }); $http->start();
这里需要在访问时加上一个XDEBUG_SESSION_START
参数或者在 Cookie 中添加也可以
浏览器访问http://127.0.0.1:9501/?XDEBUG_SESSION_START=xdebug
也是可以断点调试的
框架的使用也是同理的,至于其他的什么和 docker 一起使用等等自己研究吧...
这里放一张调试 Hyperf 的截图
还有一个 Tips,把右上角的电话图标选择为上图那样,会在命令行启动服务时自动调起 Debug 服务。
以上就是Swoole 中怎么使用 Xdebug实现单步调试,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。