城市分类信息网站系统网页规划书怎么写

news/2025/9/30 2:47:56/文章来源:
城市分类信息网站系统,网页规划书怎么写,常用的建一个网站要多少钱,wordpress七牛插件前言最近前端老是反馈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.mzph.cn/news/922424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设构成技术要求水墨风格网站欣赏

2.0.概述 本章概述了系统级的Linux性能工具。这些工具是你追踪性能问题时的第一道防线。它们能展示整个系统的性能情况和哪些部分表现不好。 1.理解系统级性能的基本指标,包括CPU的使用情况。 2.明白哪些工具可以检索这些系统级性能指标。 2.1CPU性能统计信息 为…

超精简的小型C编译器

在嵌入式开发、资源受限环境或教学场景中,精简的 C 编译器非常实用。以下是一些以 "精简" 为核心设计目标的 C 编译器,按精简程度和特点分类介绍: 1. TCC (Tiny C Compiler)特点:可能是最知名的精简 C 编…

上海网站排名前十呼和浩特住房和城乡建设部网站

情感数据对LSTM股票预测模型的影响研究 作者:丁纪翔 发布时间:06/28/2021 摘要:探究了情感结构化特征数据在LSTM股票预测模型中的影响。利用Pandas对所给数据进行预处理(数据载入、清洗与准备、规整、时间序列处理、数据聚合等&am…

编程网站入口网上开店需要多少钱?

背景: 安装JDK是我们java程序在服务器运行的必要条件,下面描述几个简单的命令就可再服务器上成功安装jdk 命令总览: yum update -y yum list | grep jdk yum -y install java-1.8.0-openjdk java -version 1.查看可安装版本 yum list | grep jdk 2.如果查不到可先进行 yum upd…

平面设计网站推荐免费咨询做网站

brew卸载jenv昨天在Java9的Jigsaw HackTheTower事件中,我意识到我需要加强我的游戏并改善我现有的机制,以在我的机器上维护几个不同的JDK。 我曾经手动下载jdk,或使用brew cask来安装它们,我会在我的〜/ bash_profile中设置bash …

广东网站建设人员wordpress ftp 权限

Mysql数据类型上的一个把握 1、MySQL Decimal为什么不会丢失精度 DECIMAL的存储方式和其他数据类型都不同,它是以字符串形式存储的。假设一个字段为DECIMAL(3,0),当我们存入100时,实际上存入的1、0、0这三个字符拼接而成的字符串的二进制值&…

北京大兴做环保备案网站网站建设公司制作网站

49. 字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate"…

怎么利用QQ空间给网站做排名专业的公司网页制作

go validator使用教程 很多时候在B/S开发过程中,经常会遇到对参数的校验工作,一般客户端需要提前验证一次提交的数据是否合理,以减少后端的压力,而后端是必须要对数据做验证的。 一般验证的方式大多都是if-else,这种方式会让你掉入无底的深渊,就像下面一样。 [图片来源…

中国太空网站网站有收录就会排名吗

如今任何项目开发节奏都很快,及时掌握项目动态是很重要滴,GitHub Issues 一般都是开发者和用户反馈问题的主要渠道。 然而,随着 Issue 数量的增加,及时跟进每一个问题会变得越来越困难。 为了解决这个痛点,我们开发了…

搭建网站平台有前途吗微信公众号做的网站

在Java中,堆内存中的对象由Java虚拟机(JVM)的垃圾回收器自动进行内存管理和释放。当一个对象不再被引用时,垃圾回收器会在适当的时机自动回收该对象所占用的内存空间。这意味着在main方法执行完毕后,堆内存中的对象会被…

展开描述建设一个网站的具体步骤PPT做的好的有哪些网站

Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,当Linux启动时,硬件时钟会去读取系统时钟的设置,然后…

网络广告的特点软件定制网站优化 seo一站式

有过电脑里面想删除一个文件,死活删除不了的痛苦吗?用尽了各种办法,关闭进程,删除关联文件,卸载对应的程序,然而还是无法删除,甚至都进入了安全模式删除,依然文件纹丝不动&#xff0…

论文网站建设的参考文献公司网站优化去哪里学

文章目录 1、冒泡排序/选择排序/插入排序冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort) 2、希尔排序(Shells Sort)3、快速排序(Quick Sort)4、堆排序(Heap Sort)5、归并排序(Merge Sort)6、桶排序/计数排序/基数排序桶排序(Bucket sort)计数排序(Cou…

精品课程网站建设现状做的比较好的网站

文章目录 👉 一、正则表达式的概念👉 二、常见使用正则表达式的方法① RegExp 对象方法1. 创建 RegExp 对象的语法2. RegExp对象方法① compile(value)② exec(value)③ test(value)③ reg.toString() ② 支持正则表达式的 String 对象的方法1. search()…

Day1 Linux 入门:9 个核心命令(whoami/id/pwd 等)

一、Linux基础命令 1. whoami功能:显示当前登录用户名 示例:[root@localhost ~]# whoami root 2. id功能:查看用户身份信息(UID、GID等) 常用选项:-u:仅显示UID -g:仅显示主组GID -G:显示所有组GID -n:显示名…

网站开发目录结构金融平台网站开发

AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 旋转 如果在AVL树中进行插入或删除节点后,可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态:LL(左左),LR(左右),RR(右…

哪个网站用帝国cms做的中企动力做销售的感受

人类大脑有数百亿个相互连接的神经元(如下图(a)所示),这些神经元通过树突从其他神经元接收信息,在细胞体内综合、并变换信息,通过轴突上的突触向其他神经元传递信息。我们在博文《最优化方法Python计算:无约…

相亲网与做网站互联网推广手段

2024年网安面试题大全 秋招目录(随时更新) 有最新的公司校招信息可以随时issue,我会第一时间更新 以安全为主业的公司我就不放了(360、深信服、奇安信等),主要放不以安全为主业但有安全业务的公司 公司…

湘潭做网站 联系磐石网络seo零基础入门到精通200讲

安徽淮北市成人学电脑?-"零基础"入学,签订就业协议,保证就业薪资,先就业后付款让你学习无忧就业无忧!成人学电脑 安徽成人学电脑 淮北市成人学电脑学电脑找高薪就业it专业就选择VR环境艺术创意设计师:专业优势,装饰行业需要人才时代…

金汇网站建设wordpress搜站点网络中断

题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 …