博客内容更新迁移到 github, gitee
博客地址github 地址:https://shayvmo.github.io/
gitee 地址:https://shayvmo.gitee.io/
注:gitee 需要手动触发重新部署 pages, 通常不是最新的
可以访问 github 地址,每次推送实时更新
webman 框架 注解路由插件
Github 地址:https://github.com/shayvmo/webman-annotations
webman 框架 注解路由插件
使用了 doctrine/annotations 包来对代码内的注解进行解析。
您可以直接在控制器类或类方法定义注解,实现路由定义。
webman框架插件地址:https://www.workerman.net/plugin/115
站在巨人的肩膀可以看到更远,感谢 https://www.workerman.net/plugin/52 的启发。
更新日志
v1.1.1
2023-04-11,修复发现的RequestMapping解析allow_methods问题
v1.1.0
2023-03-30,增加php8原生注解支持
v1.0.1
2023-03-27,修复发现的bug
v1.0.0
2023-03-27,发布1.0.0版本
安装composer require shayvmo/webman-annotations
使用配置文件<?php// config/plugin/shayvmo/webman-annotati ...
windows服务器重载nginx配置无效
今天同事问我,项目部署后,配置好了Nginx,网站访问不了,一直报的“No input files.”。
一开始的思路方向是查看Nginx日志,确定一下配置有没有问题。查看日志后,显示的是这个项目目录forbidden了,但是实际上这个目录是存在。
于是就去查看了这个目录的相关权限问题,也没有找到原因。
在经过了大半小时的排查下,突然想到,看一下Nginx进程有没有正常启动。
打开任务管理器之后,发现启动了很多个 Nginx 服务,猜测在重载reload配置的时候,有些Nginx子进程是并没有真正重载到配置。
这时候解决方案就显而易见了。先把启动的进程全部结束掉,再重新启动Nginx服务,这样就恢复正常了。
这次也得出一个结论就是,在windows环境中,修改了Nginx配置之后,不需要再次启动,只需要重载一下配置就可以了;多次启动Nginx,会造成在配置重载时,没有把全部子进程配置给重载完成,从而访问失败的结果。
前后端接口传输AES加密
接口传输需要加密敏感信息时,可以使用aes进行对称加密,前后端约定加解密方式。
前端JavaScript,主要是依赖 crypto-js 的 4.1.1 版本。
import CryptoJS from "crypto-js";const keyStr = '5ad466edc44a2c6567e502d128280a7f';// 和后端约定好const ivStr = '#2%gaFD4VD7zuxFj';// 和后端约定好export default { // 加密 encrypt(data) { const key = CryptoJS.enc.Latin1.parse(keyStr); const iv = CryptoJS.enc.Latin1.parse(ivStr); const encoded = CryptoJS.AES.encrypt(data, key, { iv: iv, mode: CryptoJS.mode.CBC, ...
Yar拓展,实现PHP的RPC服务
Yar 是一个轻量级, 高效的RPC框架,它提供了一种简单方法来让PHP项目之间可以互相远程调用对方的本地方法。
并且Yar也提供了并行调用的能力。可以支持同时调用多个远程服务的方法。
准备工作参照手册进行 Yar 拓展安装,这里不赘述。
php -m查看是否开启相应模块。
示例访问入口
<?php declare (strict_types=1);// 为了方便使用原先项目框架相关类以及composer包require __DIR__ . '/vendor/autoload.php';class A { /** * @Description testA * @param string $str * @return string */ public function testA(string $str = 'yar-a') { return $str; } /** * @Description testB * @return false|string ...
线上日志系统
背景为了方便工作,我业余时间开发了一个线上接收日志的系统,提供日志推送接口。于是基于TP6 自定义日志驱动,每次打日志时,推送到线上查看。
接口文档https://www.yuque.com/docs/share/20a266c3-61bd-472c-a971-b9cc2f957f96?# 《沙屿沫服务接口规范》
密码:去《关于我》私聊我吧
步骤1、修改日志配置文件 config/log.php2、创建日志驱动类(放置的位置没有要求,能加载到即可。)3、对接线上日志系统。
1、修改日志配置文件在 channels 增加一个通道
<?php// +----------------------------------------------------------------------// | 日志设置// +----------------------------------------------------------------------return [ ...// 其他代码 // 日志通道列表 'channels' => ...
宝塔 Nginx 配置 websocket 反向代理
宝塔 Nginx 配置 websocket 反向代理。
宝塔配置:
项目伪静态
location /wss { proxy_pass http://127.0.0.1:9502;#代理到相应地址即可 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade";}
【函数分享】计算两个经纬度之间的距离
PHP函数,计算两个经纬度之间的距离
if (!function_exists('long_lat_distance')) { /** * @Description 2个经纬度之间的距离(单位:米) * @param $latitude_from mixed 出发纬度 * @param $longitude_from mixed 出发经度 * @param $latitude_to mixed 终点纬度 * @param $longitude_to mixed 终点经度 * @return float 单位:米 */ function long_lat_distance($latitude_from, $longitude_from, $latitude_to, $longitude_to) { return round( 6378.138 * 2 * asin( sqrt( ...
Bitvise SSH Client 一款超好用的免费linux服务器管理工具,ftp、shh、终端等操作
Bitvise SSH Client 一款超好用的免费linux服务器管理工具,ftp、shh、终端等操作。
传入图片地址,把图片转成base64返回
传入图片地址,把图片转成base64返回。
if (!function_exists('image2base64')) { /** * @Description 图片转base64 * @param string $img_url 图片地址 * @return string */ function image2base64(string $img_url): string { $img_info = getimagesize($img_url); if ($img_info === false) { return ''; } return sprintf("data:%s;base64,%s", $img_info['mime'], chunk_split(base64_encode(file_get_contents($img_url)), ...