PandoraBox / OpenWRT 等系统路由器流量统计不准确、实时带宽信息不准确 作者: Chuwen 时间: 2021-07-04 分类: 路由器 评论 ## 解决办法 **关闭相关硬件加速**,因为这些会影响到流量统计、QoS 等软件,看自己取舍了 ### Shortcut FE 转发加速引擎 (Fast Path) ![](https://cdn.nowtime.cc/2021/07/04/3237465459.png) 关闭后好像还是不能停止,那就需要手动关闭 ![](https://cdn.nowtime.cc/2021/07/04/2939993910.png) ### 硬件加速 ![](https://cdn.nowtime.cc/2021/07/04/1446496371.png) ## 实时带宽信息和流量统计就正常了 ![](https://cdn.nowtime.cc/2021/07/04/2714015951.png) ![](https://cdn.nowtime.cc/2021/07/04/2665215143.png)
PandoraBox / OpenWRT 等系统路由器设置 frpc 开机自启 作者: Chuwen 时间: 2021-07-03 分类: Linux,路由器 评论 ## 背景 今天在租住的地方办了联通宽带(猜测城中村某公司代理的,无公网 IPv6,只能凑合着用)60元/月 50M,最低3个月起办,押金120元,真贵真坑,网络质量一般,不能持续平稳跑满网速 可以让闲置已久的**小爱音响**和**温湿度计**之类的智能设备联动起来了 为了便于远程管理,特地装了个 **frp 内网穿透** ## 正文 假设你的 `frpc` 安装路径在 `/usr/local/frp_0.37.0_linux_mipsle` 将以下内容保存至文件比如 `/usr/local/frp_0.37.0_linux_mipsle/check.sh` > 启动命令记得自己修改! > 启动命令记得自己修改! > 启动命令记得自己修改! ```shell #!/bin/sh # 休眠 5s 再往下执行,谨防重复执行创建大量 frpc 进程,你可以减少睡眠时间 sleep 5 frpc_pid=$(pgrep /usr/local/frp_0.37.0_linux_mipsle/frpc) if test -z "$frpc_pid" then echo "Not running! Try to start" # 启动命令记得自己修改! # 启动命令记得自己修改! # 启动命令记得自己修改! /usr/local/frp_0.37.0_linux_mipsle/frpc -c /usr/local/frp_0.37.0_linux_mipsle/frpc.ini > /dev/null 2>&1 & else echo "It is running, pid: ${frpc_pid}" fi ``` 然后在 系统 -> 计划任务,添加计划任务,运行时间每X分钟运行一次脚本,我这里设置的是 1 分钟执行一次 > **命令**那个表单选择**自定义**,然后粘贴刚刚保存脚本的路径,比如我的是 `/usr/local/frp_0.37.0_linux_mipsle/check.sh` ![](https://cdn.nowtime.cc/2021/07/03/410211384.png) ### 另外值得一提的是 你还可以在 系统 -> 启动项 添加启动脚本 ```shell /usr/local/frp_0.37.0_linux_mipsle/start.sh ``` ![](https://cdn.nowtime.cc/2021/07/03/2723566933.png)
Hyperf 使用 @date、@datetime 注释启动都报错 作者: Chuwen 时间: 2021-07-03 分类: PHP 评论 Hyperf 使用 @date、@datetime 注释启动都报错 ### 使用 @date 注释 代码如下: ```php * @date: 2021/7/3 12:28 */ public function index(RequestInterface $request, ResponseInterface $response): \Psr\Http\Message\ResponseInterface { return $response->raw($this->help()); } } ``` 报错: ```log #4 /www/wwwroot/NowTool/vendor/hyperf/d in /www/wwwroot/NowTool/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php on line 39 Fatal error: Uncaught Doctrine\Common\Annotations\AnnotationException: [Semantical Error] The annotation "@date" in method App\Controller\V1\Video\DouyinController::index() was never imported. Did you maybe forget to add a "use" statement for this annotation? in /www/wwwroot/NowTool/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php:39 Stack trace: ``` ### 使用 @datetime 注释 又报以下错误: ```log Fatal error: Uncaught Doctrine\Common\Annotations\AnnotationException: [Semantical Error] The class "datetime" is not annotated with @Annotation. Are you sure this class can be used as annotation? If so, then you need to add @Annotation to the _class_ doc comment of "datetime". If it is indeed no annotation, then you need to add @IgnoreAnnotation("datetime") to the _class_ doc comment of method App\Controller\V1\Video\DouyinController::index(). in /www/wwwroot/NowTool/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php:39 Stack trace: ``` > The class "datetime" is not annotated with @Annotation. Are you sure this class can be used as annotation? If so, then you need to add @Annotation to the _class_ doc comment of "datetime". ### 看到以上错误大概需要怎么做了 参照文档的“注解”部分:https://hyperf.wiki/2.1/#/zh-cn/annotation 解决办法就是,添加需要忽略“注解”,配置文件位置 `/config/autoload/annotations.php`: ![](https://cdn.nowtime.cc/2021/07/03/7126507.png) 然后就可以正常启动了 ![](https://cdn.nowtime.cc/2021/07/03/1670611706.png)
Laravel 添加模型方法注释,使 PHPStorm 有语法提示 作者: Chuwen 时间: 2021-06-30 分类: Laravel,PHP 评论 ## 安装 1. 在 PHPStorm 上装 `Laravel` 插件 ![](https://cdn.nowtime.cc/2021/06/30/1433782083.png) 2. 在项目中添加 `barryvdh/laravel-ide-helper` 包 ```shell composer require barryvdh/laravel-ide-helper ``` ## 使用 1.为**所有模型**添加注释 ```shell php artisan ide-helper:models ``` 2.为**指定模型**添加注释 > 以下展示的是为 `App\Models\Admin` 模型添加注释,*\App\Models\Admin* 是模型的命名空间名字 ```shell php artisan ide-helper:models \App\Models\Admin ``` 3.为 Facades 生成注释 ```shell php artisan ide-helper:generate ``` 4.生成 PHPstorm Meta file ```shell php artisan ide-helper:meta ``` ## 运行为“模型添加注释”后的截图 ![](https://cdn.nowtime.cc/2021/06/30/3502548972.png)
翻出我当时想用PHP实现某个功能在 CSDN 问的一个问题 作者: Chuwen 时间: 2021-06-28 分类: 谈天说地 评论 ## 事由 闲来无事,突然在 Google 搜了下自己的**QQ 小号**,没想到会有意外的收获,我竟然在五六年前(2015-10-28)在 CSDN 提过一个关于 PHP 问题 ![](https://cdn.nowtime.cc/2021/06/28/2150184956.png) ![](https://cdn.nowtime.cc/2021/06/28/3178275766.png) 原文内容: ``` 就是不能够用,请大神帮帮忙, 思路如下 假设 $_SERVER['HTTP_HOST']" 等于 r.xsscp.com 那么这个网址 http://g.xsscp.com/include/code1.php?url=$_SERVER['HTTP_HOST']" 变为 http://g.xsscp.com/include/code1.php?url=r.xsscp.com 如果授权了,则返回当前网址 并且通过。 如果没有授权,则返回 禁止通过 滴水之恩,当涌泉相报图片说明 如果上面代码行不通,可以参考下图设计,这段代码是别人发的,也是授权的,只给看了一部分。 ``` ### 主要来看看代码吧: > 写的好烂,还有语法错误 ```php ``` ## 这还没完,我又搜了下自己的 QQ > 然后又发现了自己写的代码,具体年限已经不知道了,这时候我应该是掌握了 MySQL 在 PHP 中的使用了吧,常规的 SQL 语句应该会一点。但是这时候只会调用别人写好的类库,原生 `mysql`、`mysqli` 还是不会... > > 从以下可以看到,自己对 `return` 语句还是不了解,造成了 `if-else` 无限嵌套,指导后面我学习了 `ThinkPHP` 后面才知道方法遇到 reutrn 就直接终止执行了 > > 还有就是各种语法不严谨,以为只有成功的情况,没有失败的情况 ```php get_row("SELECT * FROM `api_idiom` WHERE `name`='{$idiom['1']}' LIMIT 1"); if($row['name']==$idiom['1']){ $count=utf8_strlen($idiom['1']); $key=mb_substr($idiom,($count-1),$count,'UTF-8'); $row=$DB->get_row("SELECT * FROM `api_idiom` WHERE `name` LIKE '{$idiom['1']}%' ORDER BY RAND() LIMIT 1"); if($row['name']){ return $row['name']; }else{ return '你太厉害了,我已经接不上啦,换一个成语来玩吧(ฅ>ω<*ฅ)'; } }else{ return '你确定存在这个('.$idiom['1'].')的成语吗?可不要糊弄我哦~'; } }else{ $row=$DB->get_row("SELECT * FROM `api_idiom` ORDER BY RAND() LIMIT 1"); return $row['name']; } }elseif(stristr($idiom,'成语')){ $idiom=explode('成语',$idiom); if($idiom['1']){ $row=$DB->get_row("SELECT * FROM `api_idiom` WHERE `name`='{$idiom['1']}' LIMIT 1"); if($row['name']==$idiom['1']){ return '读音:'.$row['spell'].'\n成语:'.$row['name'].'\n\n释义:'.$row['content']; }else{ return '你确定存在这个('.$idiom['1'].')的成语吗?可不要糊弄我哦~'; } }else{ return '你还没有输入需要查询成语释义的成语呢~(●—●)'; } } #Function Die } function query_express($nu){ global $DB; if(!$nu){ return '请输入需要查询快递信息的运单号码!'; }else{ $express=json_decode(curl_get('http://www.kuaidi100.com/autonumber/auto?num='.$nu),true); $exname=$express[0]['comCode']; if(!$exname){ return '请正确输入运单号码!'; }else{ $query=json_decode(curl_get('http://www.kuaidi100.com/query?type='.$exname.'&postid='.$nu),true); if($query['status']=='400'){ return '查询失败!可能该货物还未更新物流信息,请过一段时间再来查询吧!'; }else{ if($query['status']=='201'){ return '查询失败,原因:\n1.可能该货物还未更新物流信息,请过一段时间再来查询吧!\n\n2.该运单号不存在[请检查运单号是否输入正确!]或者已经过期了!\n\nPS:如果该运单号存在,却出现此提示,请联系该快递查询API作者QQ:1361289290,谢谢合作!'; }else{ $com=$query['com']; if($query['state']=='0'){ $state='货物正在运输中!'; }elseif($query['state']=='1'){ $state='货物已由快递公司揽收'; }elseif($query['state']=='2'){ $state='货物寄送过程中出了问题'; }elseif($query['state']=='3'){ $state='收件人已签收'; }elseif($query['state']=='4'){ $state='货物由于用户拒签、超区等原因退回,发件人已签收'; }elseif($query['state']=='5'){ $state='快递正在进行派件中'; }elseif($query['state']=='3'){ $state='货物正在处于退回发件人途中'; }else{ $state='状态查询失败,请稍后再查询吧!'; } $row=$DB->get_row("SELECT * FROM `api_expresscom` WHERE `com`='$com' LIMIT 1"); $arrlength=count($query['data']); for($i=0;$i<$arrlength;$i++){ $data.=$query['data'][$i]['time'].'\n'.$query['data'][$i]['context'].'\n\n'; } return '查询运单号:'.$nu.'['.$row['name'].']\n货物状态:'.$state.'\n\n'.$data.'查询时间:'.date('Y-m-d H:i:s'); } } } } #Function Die } function joke(){ global $DB; $row=$DB->get_row("SELECT * FROM `api_joke` ORDER BY RAND() LIMIT 1"); return '《'.$row['title'].'》\n'.$row['text']; } function historic($msg){ global $DB; if(stristr($msg,'今天')){ $m=date('m'); $d=date('d'); }else{ $text=str_replace(Array('历史上的','日'),'',$msg); $t=explode('月',$text); $m=$t['0']; $d=$t['1']; } if($m && $d){ $m=str_replace(Array('01','02','03','04','05','06','07','08','09'),Array('01'=>'1','02'=>'2','03'=>'3','04'=>'4','05'=>'5','06'=>'6','07'=>'7','08'=>'8','09'=>'9'),$m); if($m<'0'){$m='1';}elseif($m>'13'){$m='12';} $d=str_replace(Array('01','02','03','04','05','06','07','08','09'),Array('01'=>'1','02'=>'2','03'=>'3','04'=>'4','05'=>'5','06'=>'6','07'=>'7','08'=>'8','09'=>'9'),$d); if($d<'0'){$d='1';}elseif($d>'32'){$d='31';} }else{ $m=str_replace(Array('01','02','03','04','05','06','07','08','09'),Array('01'=>'1','02'=>'2','03'=>'3','04'=>'4','05'=>'5','06'=>'6','07'=>'7','08'=>'8','09'=>'9'),date('m')); $d=str_replace(Array('01','02','03','04','05','06','07','08','09'),Array('01'=>'1','02'=>'2','03'=>'3','04'=>'4','05'=>'5','06'=>'6','07'=>'7','08'=>'8','09'=>'9'),date('d')); } } } ``` --- 仅此回忆