php
苗先生的PHP记录
有什么我碰到的问题, 看了我的笔记没有解决,可以在帖子中留言 , 大家一起探讨解决!
正在想跨出舒适圈,而每个人都喜欢在舒适圈里呆着,整得我都进不去了-v-
懒得要命 ,很少做原理文字分析,都是自己在项目中遇到的问题或笔记,我只要结果不要过程!
展开
-
通过反射类打造通用微信支付回调
【代码】通过反射类打造通用微信支付回调。原创 2023-02-09 17:28:44 · 227 阅读 · 0 评论 -
php通过变量的值获取对应常量的值
这里通过rabbitmq投递任务 , 在消费者中调用分发方法进行不同操作(异步 , 节省请求时间)真的是难到我了 , 下面是代码 , php函数自己研究一下吧。通过变量的值获取是否有同名的常量 , 并获取这个常量的值。我这是hyperf框架 , php8.0。原创 2023-02-01 17:09:33 · 237 阅读 · 0 评论 -
PHP redisearch的使用
下载PHP redisearch这个客户端支持redis扩展 ,predis等我这里命令执行创建索引。原创 2023-01-29 13:36:33 · 320 阅读 · 0 评论 -
laravel 模型属性$casts
属性转换提供了类似于访问器和修改器的功能,且无需在模型上定义任何其他方法。模型中的 $casts 属性提供了一个便利的方法来将属性转换为常见的数据类型。$casts 属性应是一个数组,且数组的键是那些需要被转换的属性名称,值则是你希望转换的数据类型。decimal类型和其他的不同 , 需要指定小数点位数。decimal:2 保留小数点两位。原创 2022-12-30 15:43:09 · 1648 阅读 · 0 评论 -
laravel框架 hyperf框架 的 find_in_set
dispatch_city 是城市码 , 逗号分隔那种 ,$city_code是数字。原创 2022-12-28 08:42:10 · 449 阅读 · 0 评论 -
hyperf3.0 上传文件报错 , 文件头大
这里我查找了点资料 , 解决方案很简单 , 就是在config / autoload / server.php中的setting设置 , 添加一行代码, 并增大一点缓冲区大小即可。这里如果你像我一样手写的工厂模式上传 , 可以使用OSS , 千万别用华为云的就对了 , 这里如果服务器和OSS在同一个机房 , 可以使用内网地址达到加速的作用。下面是我的阿里云上传OSS代码 , 没有存储到本地进行中转 , 2M文件大概是0.2s左右。原创 2022-12-22 17:32:43 · 1221 阅读 · 0 评论 -
微信小程序订阅消息
subscribeMessage.send | 微信开放文档由于业务需求 , 需要实现小程序订单状态发送给用户 , 于是微信小程序发送订阅消息就被找到了这里前端是使用了uniapp , 具体实现方式不清楚,就不瞎bb了后端这里就是上面的接口文档 , 总共需要是三个步骤1. 获取小程序 appid 和 密钥2. 订阅消息模板选择3. 通过appid 和 密钥获取accesstokenauth.getAccessToken | 微信开放文档4. 获取用户小程序openid5. 测试模板消息是否发送成功 , 这里原创 2022-12-05 16:25:23 · 5238 阅读 · 0 评论 -
hyperf redis-cluster连接
配置很简单 , 随便在网上一搜一大堆 , 但是一旦出问题 , 网上有效的解决方案会很少 , 官方文档也不太容易懂 , 很多网上的帖子都是复制粘贴的和想要的结果根本不搭边😒。这里我之前是使用的redis-sentinel哨兵 , 但是总有redis无法连接的情况发生 , 于是从 1主3从3哨兵直接上cluster集群 , 3主3从。这里的seeds选项是各个redis节点, 我这里是所有节点都写了 ,但是我测试只写一个节点也是好使的。这里有一个注意事项 , 在使用redis-cli的时候需要加上。原创 2022-11-22 15:35:26 · 550 阅读 · 0 评论 -
hyperf redis哨兵连接池 读写分离
这里使用的redis哨兵模式 , 并通过实例化不同的连接池达到读写分离的作用首先如图所示 , 创建这四个文件。原创 2022-10-27 09:48:36 · 966 阅读 · 0 评论 -
hyperf自定义连接池创建redis哨兵 1
这里是用predis写的 , 所以这里需要安装predis composer包首先在app \pool 文件夹中创建了这两个文件其中myConnectionPool是连接池 , RedisIn是创建redis连接。原创 2022-10-21 10:14:28 · 556 阅读 · 0 评论 -
php_redis扩展 连接redis哨兵模式
我用hyperf连接redis哨兵碰到了很多很多问题最主要的问题就是一大堆人挂羊头卖狗肉写着php连接哨兵的幌子内容是配置哨兵我™服了没办法人要靠自己我这里用的中文镜像站 , 链接放评论里了除了php-redis扩展连接方式以外 ,还有predis软件包的连接方式 , 自行翻找我的博客predis软件包是用composer下载的我这里就直接用的原生空文件写的demo我这里没有安装 ,我用的宝塔 ,想手动安装自行查找资料 ,这个不难下面我就不放截图了。原创 2022-10-21 09:19:58 · 387 阅读 · 0 评论 -
predis 连接redis哨兵模式
composer安装完成后 , 项目下会出现一个vendor文件夹和composer.json。还有php-redis扩展的连接方式 , 自行翻找我的博客。我用hyperf连接redis哨兵碰到了很多很多问题。这里代码也很简单 , 这里可以配置多个哨兵的。然后打开哨兵下属主机从机 , 查看是否写入成功。predis软件包是用composer下载的。我这里用的中文镜像站 , 链接放评论里了。我这里就直接用的原生空文件写的demo。写着php连接哨兵的幌子。输出 ok123。原创 2022-10-21 09:07:45 · 788 阅读 · 1 评论 -
使用nginx负载均衡upstream分发请求地址到hyperf项目
这里主要是配置分发负载均衡 , 只是轮询 , 其他模式如 iphash 权重等 , 自行查找资料修改upstream。宝塔环境: centos7 + php8.1 + nginx1.2 + swoole4 + hyperf3.0。这里是加在http 模块下 , nginx配置文件中的结构如下。4. 修改两个项目访问结果不一致 , 查看请求。2. 在网站的配置文件中修改成下面这样子。1. 首先在nginx主配置文件中添加。3. 重启nginx。原创 2022-10-18 16:48:39 · 945 阅读 · 0 评论 -
php 脱敏(手机号脱敏 , 姓名)
脱敏在工作中很常见 , 比如把 张三展示成张* , 17767779777展示成177****9777。使用: 真实姓名 手机号脱敏。原创 2022-10-18 08:47:02 · 2170 阅读 · 2 评论 -
PHP8.0 调用函数顺序 命名参数
8.0+版本才行 , 有一些方法不需要所有参数都传递 , 可以这种方式。这里的参数和变量是同名的。原创 2022-10-11 14:07:33 · 168 阅读 · 0 评论 -
hyperf 前置中间件 后置中间件
今天碰到一个问题 , 就是正常跑接口 , 我们需要做一些日志 , 当出现慢日志问题进行分析与接口优化 , 于是想到了全局中间件但是hyperf文档中没有写根据这个官方的图示 , 可以看到这是一个洋葱模型 , 也就是说 , 肯定存在后置中间件执行顺序: Request -> Middleware 1 -> Middleware 2 -> Middleware 3 -> Middleware 2 -> Middleware 1 -> Response。原创 2022-09-16 17:01:15 · 510 阅读 · 0 评论 -
swoole(hyperf) cURL error 1014: SSL verify failed(编译安装swoole)
今天开发的是hyperf框架加入支付宝登录 , 出现了上面的问题宝塔版本7.9.4centos 7hyperf 3.0php 8.1.9swoole4 (宝塔软件商店直接安装的)如果你们也出现了这种问题 , 可以考虑按照我的步骤走 , 可能会解决原创 2022-09-15 15:55:06 · 1504 阅读 · 0 评论 -
linux多人共享控制台 screen
今天碰到一个问题 , 就是开发php项目,使用的hyperf框架 , 所有的打印信息都在控制台 , 但是当有一个人监听时 , 我就看不见打印信息了 , 这就很伤。于是想了个办法解决这个问题 , 本机centos7。这里进入会话就是这个问题的解决方案了。用-d 参数将指定会话进行离线处理;用-x 参数一次性恢复所有的会话;用-r 参数回复指定会话;查看会话列表 -ls。使用screen创建。原创 2022-09-14 14:01:06 · 374 阅读 · 0 评论 -
hyperf通过nginx代理后, 获取真实ip
在多级代理的情况下,记录每次代理之前的客户端真实ip。#保留代理之前的真实客户端ip。#保留代理之前的host。# 转发Cookie,设置 SameSite。这里需要配置nginx配置文件。原创 2022-09-09 15:06:04 · 2094 阅读 · 0 评论 -
swoole-cli
最新的swoole-cli已支持 Windows 环境,基于cygwin64实现,下载即可使用。转载 2022-09-01 14:44:51 · 826 阅读 · 1 评论 -
安装hyperf指定版本
composer create-project hyperf/hyperf-skeleton 文件名 版本号。现在想安装2.2必须。原创 2022-08-29 18:44:21 · 838 阅读 · 0 评论 -
使用redis geo计算范围内的数据
将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用或者命令对数据进行半径查询等操作。原创 2022-08-11 13:28:29 · 536 阅读 · 0 评论 -
PHPSTUDY_PRO配置redisRDB持久化
打开phpstudy_pro 的目录 , 进入Extensions目录下的redis。最后一行是持久化文件dump.rdb的存储目录 , 自行创建。我这里创建了一个文件夹专门存储持久化文件。原创 2022-08-11 09:08:43 · 439 阅读 · 0 评论 -
微信获取access_token , jsapi_ticket
有ASCII码排序 , 有sha1加密 , 基于有效时间存储到了redis。这里我是使用的THINKPHP框架 , 没有引入微信的sdk。这里我写了一个关于前端的jsSDK的签名等。原创 2022-08-10 09:31:02 · 1242 阅读 · 0 评论 -
PHP以变量的形式,动态的调用静态方法
PHP以变量的形式,动态的调用静态方法。原创 2022-08-05 14:47:53 · 414 阅读 · 0 评论 -
PHP可变参数
之前总有小伙伴不清楚一个方法中的参数前有三个. , 比如function add(.....$args)这里的...代表可变参数的意思 , 这个方法的参数后面是不限制数量的 , 属于PHP5.6版本的新特性。原创 2022-08-05 14:52:57 · 839 阅读 · 0 评论 -
fastadmin自定义页面绑定事件
事件绑定id和form表单的ID一致,就可以实现了。转载 2021-09-14 18:27:35 · 424 阅读 · 0 评论 -
php计算折线图 echarts折线图
最后返回x轴数据$date和Y轴数据$ydata给前端,前端就可以用echarts解析成折线图了哦。CancelTimeDate是通过获取器获取的Y-m-d格式的cancel_time。2.获取X轴数据(时间,看我之前的文章有这个方法)这里拼装后的data和ydata数据分别是。.........原创 2022-07-29 15:51:59 · 227 阅读 · 0 评论 -
php 框架计算偏移量
当一个查询语句偏移量offset很大的时候,如select*fromtablelimit10000,10,先获取到offset的id后,再直接使用limitsize来获取数据,效率会有一些提升,但不是很大。但是如果想直接使用select方法查询,就需要手动计算偏移量,在limit中使用。正常分页比如TP框架是可以直接使用paginate链式函数或者page函数。但是,众所周知mysql很神奇。时间0.029s。时间0.012s。......原创 2022-07-25 16:15:53 · 271 阅读 · 0 评论 -
php 计算一段时间段每一天日期的数组
代码】php计算一段时间段每一天日期的数组。原创 2022-07-18 15:42:18 · 330 阅读 · 0 评论 -
PHP 精准加减乘除
精准运算php减法bcsub(PHP 4, PHP 5, PHP 7, PHP 8)bcsub — 两个任意精度数字的减法bcsub(string , string , ?int = ): string 减去 。以 string 类型返回减法之后的结果。乘法bcm原创 2022-07-14 15:29:31 · 2268 阅读 · 0 评论 -
ThinkPHP搜索7天15天30天数据where语句
ThinkPHP搜索7天15天30天数据where语句原创 2022-07-12 09:57:30 · 1439 阅读 · 0 评论 -
PHP Redis基于TP5.1框架实现互斥锁
互斥锁常见使用场景: 缓存穿透看下面这两个用户其实都请求了数据库,假设用户量大,会导致大量请求打到数据库导致宕机 我的这个demo是苹果授权的服务层代码 , 这里获取的数据是可以重复使用的,但是所有用户都请求会浪费服务器资源,所以添加一个互斥锁减少服务器的消耗...原创 2022-07-11 17:35:37 · 682 阅读 · 0 评论 -
swoft 模型分层
不仅仅局限于 MVC 。将数据在model 这一个层面剖析开,优雅的处理数据 逻辑,缓存,业务,数据库操作的烦恼。这个思路也适用于 thinkphp,hyperf,imi 等框架。不再简单的 实现 controller->model->view 的处理过程。 controller 层面 Data 层中 进行缓存判断,资源调用。Dao层,返回数据。操作实例。 【Entity】中,就是直接指定数据文件了。...原创 2022-07-07 15:41:28 · 238 阅读 · 0 评论 -
swoft项目上线
我这里使用的宝塔 , 我这里是单点首先创建站点 , 导入代码 , 项目运行起来nginx配置:原创 2022-07-07 13:12:52 · 131 阅读 · 0 评论 -
宝塔centos8修改默认PHP版本
处理掉以前的引用你想要的版本原创 2022-06-15 15:40:26 · 249 阅读 · 0 评论 -
phpstudy安装高版本redis
当前phpstudy中能直接安装的只有3.0.504这个版本老实说新手还好 , 但是如果在本地写一些企业级应用时 , 会出现一些小问题而且如果你想体验一下redis一些特性等东西时,3.0.504根本不够用这时, 就需要手动安装了, 但是会存在一下几点:网上能找到的redis一般都是微软团队弄的: GitHub - microsoftarchive/redis: Redis is an in-memory database that persists on disk. The data model is k原创 2022-07-07 10:20:13 · 1975 阅读 · 0 评论 -
Redis-RTT
RTT是网络往返时间的简称每一次执行redis都会向redis-server发送执行的命令(send),比如set a 1, redis-server接收到请求并执行后,会返回一个数据或结果(recv) , send时间和recv中间的时间就是RTT, 也就是说假如发送了三次redis命令,就会产生三个RTT需要注意的是集群模式对于pipline不太友好,因为pipline要操作的key可能在不同的哈希槽上,此时就需要进行请求的转发,但是这是与pipline的思想相违背的,所以集群模式下不太支持使用pip原创 2022-06-28 10:25:20 · 270 阅读 · 0 评论 -
关闭swoole短命名
swoole.use_shortname = off原创 2022-06-15 18:13:59 · 769 阅读 · 0 评论 -
PHP RabbitMQ消息持久化以及手动应答
rabbitmq手动应答PHP原创 2022-06-07 19:03:25 · 629 阅读 · 0 评论