- 博客(31)
- 收藏
- 关注
原创 PHP + Laravel + RabbitMQ + Redis 实现消息队列 (五) 异常处理(死信)、延时队列与优先队列
当我们遇到消息没有被正常消费的时候,需要对这条异常的消息进行处理,这里就会遇到一个问题,如果是直接丢弃消息,那么这条消息就会丢失。如果是直接重试,那么如果还是存在异常,这里就会陷入死循环。
2024-08-10 18:16:05
883
原创 PHP + Laravel + RabbitMQ + Redis 实现消息队列 (四) 消息队列的持久化、惰性队列与确认机制
持久化:关注于 RabbitMQ 服务器重启后,对象(交换机、队列、消息)的存活性和保持状态。惰性队列:是一种优化策略,用于减少内存使用,特别是对于大量未消费的消息队列。
2024-08-09 08:00:00
1775
原创 PHP + Laravel + RabbitMQ + Redis 实现消息队列 (三) 消费队列在RabbitMQ和redis中的发布和订阅
对于消息队列传统的模式来说,一个消费者消费一条消息,这条消息被消费之后就不会再次被其它的消费者消费。但是在发布订阅模式中,一条消息是可以被多个消费者消费的,这些消费者其实相当于是订阅了这条队列的消息。当有新的消息出现在队列中,就会像广播一样让所有订阅者都获得这条消息。
2024-08-08 09:00:00
1790
原创 PHP + Laravel + RabbitMQ + Redis 实现消息队列 (二) 消费队列在RabbitMQ和redis中的简单使用
这里我们的测试环境使用的是larveal;其中P端代码我放到了,作为一个基础的路由进行访问,但是在因为这里消费的代码不能这样处理所以消费端的代码我使用了 larveal 提供的命令行。我们进行一个测试,可以看到消费者先是输出了接收到的数据,然后正常的打印出来了;在上面这段代码中 我们需要注意的是。
2024-08-07 18:31:14
1198
原创 PHP + Laravel + RabbitMQ + Redis 实现消息队列 (一) RabbitMQ安装 Error: unable to perform an operation on node
首先这里我们需要 找到用户目录下有一个 .erlang.cookie 还有一个在。可能是因为 .erlang.cookie 的配置不一致问题;然后修改两个文件一致即可;
2024-08-06 19:46:19
1183
原创 幻兽帕鲁 vbs 检测服务器内存到达阈值 自动重启进程
objShell.Run “D:\SteamLibrary\steamapps\common\PalServer\PalServer.exe”, 0, False 这里是路径。memInKB < 1000 修改的阈值 比如这里 1000 就是100M。
2024-01-23 01:16:26
698
1
原创 Laravel hidden 后使用 makeVisible 失效的邪道解决方案
方法用于在模型实例中解除字段的隐藏,使其在模型对象中可见。但它并不会直接影响到数据库查询。我注意到我的查询语句也是正确的,但是在使用。这样可以得到正常的值,但是具体是因为什么原因导致的失效还不清楚,希望大神能指点迷津。今天写代码的时候发现自己二次封装的查询语句里面查询数据缺失了;方法中的加入别名操作就可以正常查询出来了;条件指定查询的字段依然失败;按照网上百度的方法我们给查询语句加上了。在文档中我们可以看到。
2024-01-16 18:07:19
441
原创 使用 YAK Pro - PHP Obfuscator 混淆 php 代码 示例为PHP8 + larveal10 框架代码
当您有一个要发布一个php项目时,往往会吧代码全部部署到服务器上;出于任何原因,您可能希望其他人不理解、修改或调整您的软件。但是又需要被PHP理解所以我们只需要做到混淆代码让人难以理解。
2024-01-05 18:24:14
1989
原创 Hyperf 实现Rpc jsonrpc-http(docker+consul)
Hyperf中实现rpc jsonrpc-http 基于docker 和 consul
2023-03-27 18:33:42
504
原创 PHP循环查数据库优化方案-SQL结果固定
今天写代码的时候客户突然把分页参数拉倒了1000每页,发现了查询效率很慢。SQL查询,导致了SQL的循环查找,按理来说这个值应该由参数传递进去但是代码已经写好了我们就不去动调用他的地方了。利用如上的特性我们就可以把需要查找的SQL内容也静态化起来,这样就不会重复的去请求数据库了。这里是因为 在PHP中 只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值。这里一定要注意这种情况一定是发生在SQL查询结果是固定的情况下。我们先看一段代码,这里打印出来的结果为。静态类型去控制他的查询。
2023-03-20 17:11:17
336
原创 Hyperf中模拟打断方便在浏览器中进行调试
刚接触Hyperf没有多久,就感觉一直和以往FPM的方式不大习惯。老想着打断就die或者exit,引起资源未释放、连接未关闭等问题,并且框架本身也会直接报错。于是想到可以使用 Hyperf 框架提供的 throw new Exception() 抛出一个异常使程序中断模拟以前的操作;
2023-03-14 23:55:31
744
原创 新版钉钉API PHP文件上传流程
1.调用文件上传信息接口,获取临时授权码,测试代码如下。use AlibabaCloud\SDK\Dingtalk\Vdrive_1_0\Dingtalk; # 需要注意的是这里的钉钉客户端在包 AlibabaCloud\SDK\Dingtalk\Vdrive_1_0 $client = new Dingtalk(); $getUploadInfoHeaders = new GetUploadInfoHeaders([]); $getUploadInf
2022-05-12 10:38:56
2061
原创 Centos 安装libreoffice 以及 word转pdf转html转epub转txt
Centos 安装libreoffice首先我们创建一个 libreoffice 文件夹用于对压缩文件的管理,然后下载 libreoffice 安装包,并且进行解压后安装。需要其他版本可以在 http://mirrors.cloud.tencent.com/libreoffice/libreoffice 下载这里用的是7.3.1 如果这里提示 not found 需要去切换一下版本 # 创建 libreoffice 文件夹 mkdir libreoffice cd libreoffice
2022-03-16 14:46:05
2964
原创 pikachu 数据连接失败,请仔细检查inc/config.inc.php的配置解决方法
pikachu 数据连接失败,请仔细检查inc/config.inc.php的配置解决方法。pikachu:下载地址https://github.com/zhuifengshaonianhanlu/pikachu1.配置 inc 与 pkxss/inc 下config.inc.php中的 数据库配置\inc\config.inc\php | \pkxss\inc\config.inc.php因为这里我们修改了端口号,所以需要进行额外操作。2.修改install文件。3.重新运行安装文
2022-03-11 16:57:42
23581
29
原创 Mysql EXPLAIN 详解 + SQL
EXPLAINexplain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。本次SQL版本基于8.0.12 和 5.5.29首先导入用来做示例的表DROP TABLE IF EXISTS `tbl_dept`;CREATE TABLE `tbl_dept` ( `id` int(11) NOT NULL AUTO_INCREMENT, `deptName` varchar(30) CHARACTER SET utf8 COL
2022-01-05 16:54:00
671
原创 Redis缓存穿透、缓存击穿、缓存雪崩问题
缓存穿透key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。缓存穿透解决方案一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。布隆过滤器使用bitmaps类型对数据设置白名单不存在的数据也进行缓存
2021-12-24 10:16:51
630
原创 Redis集群搭建
Redis集群搭建什么是集群所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。Redis集群实现了对Redis 的水平扩容,即启动N个redis 节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。Redis集群通过分区(分区)来提供一定程度的可用性(可用性):即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。搭建基础集群删除持久化数据删除掉目录中的 RDB AOF文件 并且关闭AOF配置制作6个实例来模拟最简
2021-12-23 10:35:09
141
原创 Redis主从复制搭建
Redis的主从复制介绍主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复制的作用数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的
2021-12-21 20:34:21
929
原创 Redis持久化 RDB和AOF的比较和选择
Redis持久化redis是一个内存数据库,数据保存在内存中,同时如果你需要数据存储在磁盘中可以使用其自带的两种数据存储方式。RDB(RedisDataBase)RDB是redis默认的持久化存储方式,RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb,文件位置默认保存在redis服务的启动目录。相关的redis.confsave如果你不需要执行持久化全部注释即可save m n 表示m秒内
2021-12-20 17:22:32
1265
原创 PHP + Redis实现秒杀
秒杀的步骤1.设置库存设置库存直接采用redis set 命令进行模拟//设置 key 为 SP1001ID 的商品库存为10set SP1001ID 102用户参与秒杀用户参与秒杀本质上要做的事情就是,1.记录秒杀成功用户信息;2.商品库存减1;涉及到的问题:1.redis链接超时问题解决方案:设置redis连接池PHP设置连接池:https://www.cnblogs.com/daizhongxing/p/13840211.html注意:PHP为脚本语言,脚本执行完毕Redis
2021-12-17 17:53:22
2082
原创 Mysql不同版本的重要改进
Mysql不同版本的重要改进版本重要改进4.1增加了子查询的支持;增加了字符集中对UTF-8的支持5.0增加了视图、过程、触发器的支持,增加了 infomation_schema (信息数据库)系统库5.1增加了表分区的支持;支持基于行的复制 (row-based replication)5.5InnoDB 成为默认存储引起;支持半同步复制;引入 performance_schema 动态性能视图5.6支持 Online DDL操作;支持 ICP /
2021-11-10 22:15:05
448
原创 mysql 排序varchar类型的纯数字 排序规则的变化
Order by xxx的时候排序出现了混乱下面是示例首先我们新建一个数据表,作为测试 并且把测试用的字段改为varchar类型 数据如下现在我们执行SQLSELECT `*` FROM `t_test` ORDER BY `number` ASC按照预期的状态 他得到的结果应该是但是 实际的结果却变成了结论当我们在数据库中对varchar类型字段进行排序的时候,即...
2019-12-24 17:15:01
680
2
原创 tp5 地址隐藏省略public/index.php
ThinkPHP5.0.24 url 访问省略 public/index.php1,把public目录中的index.php移至根目录,并修改:<?phpdefine('APP_PATH', __DIR__ . './application/');// 加载框架引导文件require __DIR__ . './thinkphp/start.php';2,把public 中...
2019-12-24 15:30:43
826
原创 idea官网进不去
idea官网进不去刚刚想下一个JAVA的IDE发现IDEA进不去了,请求的时候发现没有发起请求,突然想到自己修改过host1.如果host文件被修改,一般来说是因为已经破解过IDEA才会修改这里 host文件一般来说位置在:C:\Windows\System32\drivers\etc 因为我以前下载过 PHPstrom 所以在里面添加了两个配置 0.0.0.0 account.jet...
2019-12-17 15:16:20
5166
原创 PHP foreach中的引用变量的坑
PHP foreach中使用引用变量导致的坑首先我们先来看现象<?php$test_arr = [1, 2, 3];echo "<pre>";foreach($test_arr as &$item) { echo "{$item}".PHP_EOL;}foreach ($test_arr as $item) { echo "{$it...
2019-12-17 12:02:24
289
原创 PHP array_merge 与 + 的一些区别
PHP array_merge 与 + 的一些区别对于取值的不同<?php$test_arr_1 = ['a'=>'1','b'=>'2'];$test_arr_2 = ['b'=>'3','c'=>'4'];echo "<pre>";// + 以前一个数组值为准var_dump($arr1+$arr2);array ( 'a...
2019-12-16 16:01:37
162
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人