当前位置: 首页 > news >正文

和田地区网站建设_网站建设公司_ASP.NET_seo优化

怎么做淘宝网站教程,自驾游网站建设,网站 开发 工具,大连网络推广宣传前言最近前端老是反馈API调用异常#xff0c;说请求成功但是没有数据返回#xff01;我写的代码怎么可能有bug#xff0c;肯定是前端调用的方式不对#xff01;经过一番套鼓#xff0c;直接把请求参数和响应内容打印到控制台#xff0c;果然不出我所料#xff0c;请求缺…前言最近前端老是反馈API调用异常说请求成功但是没有数据返回我写的代码怎么可能有bug肯定是前端调用的方式不对经过一番套鼓直接把请求参数和响应内容打印到控制台果然不出我所料请求缺少重要参数为了能让前端每次出问题后不用来找我(俗称甩锅)自己排查问题我就想着把每次的请求参数和响应内容记录下来前端查看请求记录详情排查问题。刚好看到EasySwoole有这么一个组件(链路追踪)可以记录每次的请求信息所以就写了这个甩锅工具。(说真的用起来真香)话不多说先来一张甩锅工具效果图每次请求需要记录的参数请求地址、客户端IP、请求时间、请求状态、请求耗时、请求参数、响应内容先创建mysql表CREATE TABLE td_api_tracker_point_list (pointd varchar(18) NOT NULL,ip varchar(100) DEFAULT ,create_date varchar(30) DEFAULT COMMENT 访问时间 2020-02-23 12:00:00,pointName varchar(100) DEFAULT NULL,parentId varchar(18) DEFAULT NULL,depth int(11) NOT NULL DEFAULT 0,isNext int(11) NOT NULL DEFAULT 0,startTime varchar(14) NOT NULL,endTime varchar(14) DEFAULT NULL,spendTime decimal(15,3) DEFAULT 0.000,status varchar(10) NOT NULL,uri varchar(255) DEFAULT ,result text,data text,PRIMARY KEY (pointd),UNIQUE KEY trackerId_UNIQUE (pointd)) ENGINEInnoDB DEFAULT CHARSETutf8;创建ORM表模型\App\Model\TrackerPoint\TrackerPointModel.php?php namespaceApp\Model\TrackerPoint;classTrackerPointModelextends\EasySwoole\ORM\AbstractModel{protected$tableNametd_api_tracker_point_list;}就是这么简单就创建好了表模型安装链路追踪组件composer require easyswoole/tracker使用链路追踪在EasySwooleEvent.php的onRequest引入链路追踪并传入请求uri,get和post参数public static functiononRequest(Request$request,Response$response): bool{$allow_originarray(http://www.xxx1.com,https://www.xxxx2.com,http://127.0.0.1,);$origin$request-getHeader(origin);if($origin! []){$origin$origin[0];if(in_array($origin,$allow_origin)){$response-withHeader(Access-Control-Allow-Origin,$origin);$response-withHeader(Access-Control-Allow-Methods,GET, POST, OPTIONS);$response-withHeader(Access-Control-Allow-Credentials,true);$response-withHeader(Access-Control-Allow-Headers,Content-Type, Authorization, X-Requested-With, token);if($request-getMethod() OPTIONS) {$response-withStatus(Status::CODE_OK);return false;}}}/*** 链路追踪*/$point PointContext::getInstance()-createStart($request-getUri()-__toString());$point-setStartArg([uri$request-getUri()-__toString(),get$request-getQueryParams(),post$request-getRequestParam()]);return true;}在EasySwooleEvent.php的afterRequest获取链路结果并写入到mysql表中//请求结束前执行public static functionafterRequest(Request$request,Response$response): void{// 真实IP$ip;if(count($request-getHeader(x-real-ip))) {$ip$request-getHeader(x-real-ip)[0];}else{$params$request-getServerParams();foreach([http_client_ip,http_x_forward_for,x_real_ip,remote_addr]as$key) {if(isset($params[$key]) !strcasecmp($params[$key],unknown)) {$ip$params[$key];break;}}}// 查看每次请求记录 http://host/index/tracker$point PointContext::getInstance()-startPoint();$point-end();$array Point::toArray($point);$rsp$response-getBody();foreach($arrayas$k$v){$data[ip] $ip;$data[pointd] $v[pointId];$data[pointName] $v[pointName];$data[parentId] $v[parentId];$data[depth] $v[depth];$data[isNext] $v[isNext];$data[startTime] $v[startTime];$data[endTime] $v[endTime];$data[spendTime] $v[endTime]-$v[startTime];$data[status] $v[status];$data[result] json_encode($v);$data[data] $rsp-__tostring();$data[uri] $v[startArg][uri];$data[create_date] date(Y-m-d H:i:s,time());if(strpos($v[startArg][uri],index/tracker) !false||strpos($v[startArg][uri],index/tracker) !false){//过滤index/tracker和index/getTracker这两个方法}else{\App\Model\TrackerPoint\TrackerPointModel::create()-data($data,false)-save();}}}到这里基本大功告成了剩下的就是写个页面把记录展示出来安装模板视图composer require easyswoole/template实现渲染引擎创建文件\App\Template.php?php namespace App;use EasySwoole\Template\RenderInterface;class Template implements RenderInterface{protected $template;function __construct(){$config [view_path     EASYSWOOLE_ROOT./App/Views/,cache_path   EASYSWOOLE_ROOT./Temp/runtime/,];$this-template new \think\Template($config);}public function render(string $template, array $data [], array $options []): ?string{// TODO: Implement render() method.ob_start();$this-template-assign($data);$this-template-fetch($template);$content ob_get_contents() ;return $content;}public function afterRender(?string $result, string $template, array $data [], array $options []){// TODO: Implement afterRender() method.}public function onException(\Throwable $throwable): string{// TODO: Implement onException() method.$msg {$throwable-getMessage()} at file:{$throwable-getFile()} line:{$throwable-getLine()};trigger_error($msg);return $msg;}}在EasySwooleEvent.php的mainServerCreate实例化视图并注入配置/*** ****************   实例化该Render,并注入你的驱动配置    *****************/Render::getInstance()-getConfig()-setRender(newTemplate());Render::getInstance()-attachServer(ServerManager::getInstance()-getSwooleServer());在http控制器中使用视图模板渲染存放模板的目录App/Views/index控制器文件\App\HttpController\Index.php?phpnamespaceApp \HttpController;useApp\Model\TrackerPoint\TrackerPointModel;useApp\Utility\MyQueue;useEasySwoole\Component\AtomicManager;useEasySwoole\Component\Timer;useEasySwoole\EasySwoole\Logger;useApp\Model\WechatModel;useEasySwoole\Http\AbstractInterface\Controller;useEasySwoole\ORM\DbManager;useEasySwoole\Queue\Job;useEasySwoole\Template\Render;useEasySwoole\Tracker\PointContext;useElasticsearch\ClientBuilder;use\Swoole\Coroutineasco;useEasySwoole\Mysqli\QueryBuilder;useEasySwoole\Jwt\Jwt;use\PhpOffice\PhpSpreadsheet\Spreadsheet;use\PhpOffice\PhpSpreadsheet\Writer\Xlsx;classIndexextendsController{protected functiononRequest(?string$action): ?bool{return true;}//渲染模板public functiontracker(){$this-response()-write(Render::getInstance()-render(index/tracker,[row time(),jsonjson_encode([])]));}//获取链路记录列表public functiongetTracker(){$model TrackerPointModel::create();$param$this-request()-getRequestParam();if(!empty($param[uri]) ){$model-where(uri,%{$param[uri]}%,like);}$limit$param[limit]??10;$p$param[page]??1;$data[code] 0;$data[msg] ;$list$model-withTotalCount()-limit($p* ($p-1),$limit)-order(pointd,desc)-select();$data[count] $model-lastQueryResult()-getTotalCount();foreach($listas$k$v){$uri explode(:9501/,$v[uri]);if(count($uri)!2){$uri explode(:80/,$v[uri]);}$list[$k][uri] !empty($uri[1])?$uri[1]:$v[uri];$result json_decode($v[result],true);unset($result[startArg][uri]);$list[$k][result] json_encode($result[startArg]);if(strpos($v[uri],tracker) !false||strpos($v[uri],getTracker) !false){$list[$k][data] ;}}$data[data] $list;$data[sql] $model-lastQuery()-getLastPrepareQuery();$this-response()-write(json_encode($data));return false;}//测试计数器functionindex(){$this-response()-withHeader(Content-type,text/html;charsetutf-8);$atomic AtomicManager::getInstance()-get(second);$atomic-add(1);echodate(i:s,time()).计数器.$atomic-get().PHP_EOL;$this-response()-write(计数器.$atomic-get().PHP_EOL);}}甩锅完毕最后甩锅工具完成直接丢链接给前端  http://你的域名:9501/index/tracker本文为够意思原创文章,转载无需和我联系,但请注明来自够意思博客blog.go1s.cn够意思博客 » EasySwoole利用链路追踪组件制作甩锅工具
http://www.ihoyoo.com/news/25938.html

相关文章:

  • 重庆企业网站设计维护请人做ppt的网站
  • 福州网站建设策划方案下载大连建设网官方网站
  • cod建站平台广告联盟哪个比较好
  • 网站互动功能wordpress grace8
  • 商标设计网站排行一半都有哪些做影视外包的网站
  • 公司网站建设的签订合同苏州百度推广排名优化
  • 二手手机回收网站开发网站创建于
  • 网站建设找北冥有鱼网站网址查询工具
  • 商城网站开发嵌入支付宝文具和的制作需要哪些材料
  • 网站建设 ui设计在崇左app官方网下载
  • 求个网站2022全网市场营销服务(上海)有限公司
  • 电子商务网站建设与管理案例wordpress中注册功能
  • 鹰潭北京网站建设成都网络建站
  • 京东客网站怎么建设代做网站和说明书
  • 推广网站有多少家做网站哪家公司好苏州
  • 网站友情链接作用哪家网站设计比较好
  • 电子商务网站开发报告物流网站公司
  • 如何快速推广app高端网站设计优化建站
  • 岳麓区做网站建筑工程网上申报
  • 网站模板jsp的网站设计案例
  • 外国人爱做视频网站什么网站做二手货车
  • asp 网站管理系统太原关键词优化报价
  • 中国做国外的网站wordpress常见的15个问题
  • 南宁专业网站制作公司电子商务网站架构
  • 江阴网站建设多少钱中国建设通
  • 长春火车站官网哈尔滨seo搜索排名优化公司
  • ppt模板免费下载网站哪个好广西建设工程质量安全监督总站网站
  • 泰州专一做淘宝网站网络规划设计师和中级对比
  • 网站速度优化方案广州网络广告推广
  • 网站系统升级建设合同金融行业网站建设方案