利用UDP来debug PHP
来源:互联网 发布:win764位系统优化 编辑:程序博客网 时间:2024/04/28 17:56
学习PHP大概有一个多月,其中利用Thinkphp框架来做了一个小项目,在做项目的时候常常会遇到bug,bug出现的位置可能在前端的数据处理,也可能在控制器或者模型层中。如果出现在前端,可以用console.log()来打印变量值,但是如果出现在model层或者Controller里面,想调试程序打印中间变量就显得非常麻烦,有的情况下还不能利用var_dump()来输出变量值。如果可以像JAVA或者C++那样在控制台输出,并且不会影响浏览器的加载就好了,而以下就是实现这样的功能。
实现的思路是利用UDP协议,首先运行脚本(这里我选择用python3)监听本机的某个端口,在PHP(作为客户端)发送变量值到本机的端口里。然后服务器就接收到变量值并打印出来,这样就可以在不堵塞页面的情况下,获得PHP变量的值。
以下是利用python3来监听本地端口的代码
1 #!/usr/bin/env python3 2 import socket 3 import json 4 MAX_BYTES=65535*1024 5 def server(port): 6 sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 7 sock.bind(('127.0.0.1',port)) 8 print('Listening at {}'.format(sock.getsockname())) 9 while True:10 data, address=sock.recvfrom(MAX_BYTES)11 data=json.loads(data.decode('utf-8'))12 #print('The client at {} says {!r}'.format(address,text))13 print('note:{}value{}time{}'.format(data['note'],data['value'],data['time']))14 server(1060)
程序里面默认监听本地的1060端口,在不同机器上运行,可能会出现端口冲突,这时候自行更换端口值(1024-65535)就可以了。
如果成功命令行会出现
Listening at ('127.0.0.1', 1060)
然后在PHP中添加这样一个函数
/** * 使用该函数,需要先运行phpdebug.py脚本 * @param $val 要打印的变量值 * @param $note 变量的说明 * @param int $port 端口值,要与phpdebug.php一致 */function phpdebug($val,$note,$port=1060){ $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); $msg['value']=$val; $msg['note']=$note; $msg['time']=date("Y-m-d G:i:s"); $msg=json_encode($msg); $len = strlen($msg); socket_sendto($sock, $msg, $len, 0, '127.0.0.1', $port); socket_close($sock);}
测试样例
$k=233;Phpdebug($k,’this is a test’);
运行正常会出现
注:一定要先运行py脚本,再使用该函数才有效。运行py脚本请先下载python3,打开方式选择python即可运行。在这里说了一个思路利用UDP协议来进行debug,用尽量少的代码来展示这一思路。但是这里一次传输的数据大小不能大于65536*1024bit,如果读者debug过程中可能会出现大的数据包,建议使用tcp协议并在phpdebug()方法里添加大小的判断。但如果只是简单的debug,以上代码基本能够满足需求。
- 利用UDP来debug PHP
- 利用 ACE 来实现 UDP 通讯
- 利用 ACE 来实现 UDP 通讯
- 利用 ACE 来实现 UDP 通讯
- 利用浏览器控制台(Console)进行PHP Debug
- 使用PHP 版eclipse来配置远程DEBUG PHP代码
- 【android】利用BuildConfig.DEBUG来控制日志的输出
- iOS 调试技巧:如何利用 LLDB 来 Debug
- iOS 调试技巧:如何利用 LLDB 来 Debug
- Android studio中如何利用Debug模式来调试程序
- 利用flex builder 来开发php
- ubuntu 利用crontab 来运行php
- php利用数组来进行引用传递
- 利用PHP来进行消息推送
- PHP debug
- php debug
- 如何利用RMAN Debug和10046 Trace来诊断RMAN问题?
- 利用Editplus2的用户工具功能来即时调试PHP
- 关于CocoaPod的遇到的一些问题解决方法
- Android中使用Notification实现进度通知栏
- AdminEAP框架—web集成Markdown组件
- jQuery之ajax错误调试分析
- 进制转换
- 利用UDP来debug PHP
- 进程间通信
- APKTOOL的使用心得
- Spring boot学习笔记 001——初识Spring boot
- 欢迎使用CSDN-markdown编辑器
- ACM篇:POJ 1753----Flip Game
- 211 读书 《重构 改善既有代码的设计》
- Eclipse 3.7.2 Indigo 官网下载地址
- SQLServerl2012还原SQLServerl2008