PHP
文章平均质量分 61
小松聊PHP进阶
没有绝对安全的系统
展开
-
PHP APCu缓存使用与避坑
apcu_fetch获取值动不动就是false,导致结果重新赋值为10000(在不存在的情况下赋初始值),有并发问题,但不是因为并发引起的,而是因为apcu_fetch函数的问题,获取不到值返回false。压测前,为了保证ApiPOST压测参数(压测轮次 * 并发数 结果积)的准确性,特地用Redis做了多次测试,发现参数是对的,并发数大了就不对(150以上),这意味着压测工具应该没问题,只是设备线程数不够。但APCu 没有互斥的锁机制,互斥意味着并发过来的请求,通过独占该资源,让任务串行执行。原创 2024-05-19 23:59:38 · 646 阅读 · 0 评论 -
PHP的多样化执行方式(parallel PHP多线程实现,原生协程实现,多进程实现,ZTS、NTS、TS又是什么)
PHP的多样化执行方式(parallel PHP多线程实现,原生协程实现,多进程实现,ZTS、NTS、TS又是什么)原创 2024-05-18 21:03:41 · 755 阅读 · 0 评论 -
4.3万字详解PHP+RabbitMQ(AMQP协议、通讯架构、6大模式、交换机队列消息持久化、死信队列、延时队列、消息丢失、重复消费、消息应答、消息应答、发布确认、故障转移、不公平分发、优先级、等)
做研发的,可能距离成功一步之遥,别因为一叶障目而放弃。原创 2024-05-03 23:53:38 · 664 阅读 · 1 评论 -
快速理解Laravel容器(IOC、DI、Provider、Contract)
框架发展了这么久,源码的累加,不是让从头看的,而是遇到了一类问题,需要追加代码,是一个演进的过程,通过出现的问题或要优化的需求作为驱动来实现代码(书写顺序),而不是通过代码的作用反推解决的问题(反向反了很难看懂源码,看不懂干啥的,原因就是这里),换句话说,1+1=?Laravel的服务容器的反射机制会自动解析这个依赖关系。对于Laravel源码,代码很优雅,很工程化,很正规,方便扩展,这是优点,坏处就是抽象,好比垃圾桶里的垃圾都要摆放好,太过于工程化的设计,会给写松散业务逻辑的开发者带来困惑。原创 2024-04-21 07:26:36 · 689 阅读 · 0 评论 -
深入理解高并发超卖一系列问题与解决方案(近7万字详解,跳槽涨薪必备宝藏珍藏级分享)
深入理解高并发超卖一系列问题与解决方案(近7万字详解,跳槽涨薪必备宝藏珍藏级分享)原创 2024-04-20 06:37:12 · 682 阅读 · 0 评论 -
深入理解PHP+Redis实现布隆过滤器(亿级大数据处理和黑客攻防必备)
算法:普通开发者缺少算法思维,做出来的布隆过滤器概率不可控,或者容易冲突。为了防止哈希函数的值转化为数字后位数过长(例如md5(1) 为c4ca4238a0b923820dcc509a6f75849b,转10进制是261578874264819908609102035485573088411),需要对数据长度进行取模,不取模还好,取模后极大减少了布隆过滤器的长度。例如10000条数据,设定3种哈希算法,设置3万个比特位,取模后的值大多小于3万,所以冲突的概率增加了很多。原创 2024-04-08 23:18:38 · 685 阅读 · 0 评论 -
万字详解PHP+Sphinx中文亿级数据全文检索实战(实测亿级数据0.1秒搜索耗时)
这个也好办,直接在csft.conf配置文件内source段和index段复制粘贴,根据上文的两段文章,该创建索引的创建索引,该重启的重启。夜里小郎君的博文:https://blog.csdn.net/b876143268/article/details/53771310。mingaixin的博文:https://www.cnblogs.com/mingaixin/p/5013356.html。不需要引入多个文件,就和MySQL一样,只需要一个/etc/my.cnf就行了,相加配置,接着往下续就行了。原创 2024-03-29 17:04:04 · 5522 阅读 · 2 评论 -
高并发下数据幂等问题的9种解决方案
分析:为了保证防重,事务b insert时需要先查询有没有相同的数据,如果没有再进行插入,此时事务a还没有提交,事务b也就查询不到数据(能查到就是脏读,MySQL RR的隔离级别不会出现),于是进行了inset操作,结果导致事务b被阻塞(受事务a的行级X锁排斥),等事务a提交后,事务b插入失败。在用户写操作成功逻辑代码区的下游中,添加,用redis的setex命令,将模块名拼接用户id作为key,设置3秒过期,1作为value,用不上value,所以随便尝试。分布式锁对于PHP而言,不常用。原创 2024-03-23 14:57:03 · 959 阅读 · 0 评论 -
深入理解PHP+Redis实现分布式锁的相关问题
对于非PHP而言,重入问题,还需要再维持一个redis hash,key为锁名,field为节点的唯一标识,value为重入次数,重入1次次数加1。因为重入相当于重新获取锁,但是不会新增锁资源,如果这个时间被删掉,那么重入时会加锁成功,但锁资源被强制释放,此时重入后的业务逻辑还不一定执行完毕。就算是redis事务(multi)也是弱事务,仍旧会出现并发安全问题,最好使用Lua+Redis的方式去实现原子性的分布式锁,这会把一些指令集当做一个任务队列去处理,保证原子性。原创 2024-03-23 14:12:06 · 1139 阅读 · 0 评论 -
深入理解高并发下的MySQL与Redis缓存一致性问题(增删改查数据缓存的一致性、Canal、分布式系统CAP定理、BASE理论、强、弱一致性、顺序、线性、因果、最终一致性)
一些小型项目,或极少有并发的项目,这些策略在无并发情况下,不会有什么问题。原创 2024-03-20 14:54:19 · 729 阅读 · 0 评论 -
3种策略巧妙化解PHP Trait成员属性冲突
3中策略巧妙化解PHP Trait成员属性冲突原创 2024-02-09 11:58:44 · 409 阅读 · 0 评论 -
可控概率抽奖算法
可控概率抽奖算法原创 2024-02-04 23:43:07 · 591 阅读 · 0 评论 -
抢红包随机金额算法(均衡随机)
抢红包随机金额算法(均衡随机)原创 2024-02-03 14:06:31 · 474 阅读 · 0 评论 -
CSRF攻防
CSRF攻防原创 2024-01-30 00:29:44 · 877 阅读 · 0 评论 -
快速理解ASCII、GBK、Unicode、UTF-8、ANSI
文章大部分内容来源于非官方说明,且无法用逻辑推理出结果,准确性仅供参考。原创 2023-12-29 17:50:06 · 1085 阅读 · 0 评论 -
从安全、开发、产品三个角度反对用refresh_token续期access_token的观点
从安全、开发、产品三个角度反对用refresh_token续期access_token的观点原创 2023-12-22 00:02:49 · 863 阅读 · 0 评论 -
谨防利用Redis未授权访问漏洞入侵服务器
谨防利用Redis未授权访问漏洞入侵服务器原创 2023-11-24 20:17:19 · 1552 阅读 · 0 评论 -
深入理解Laravel(CVE-2021-3129)RCE漏洞(超2万字从源码分析黑客攻击流程)
深入理解Laravel(CVE-2021-3129)RCE漏洞(超2万字从源码分析黑客攻击流程)原创 2023-11-21 02:07:14 · 772 阅读 · 0 评论 -
亲测有效,解决80端口被svchost.exe进程占用的问题,网上的方法不行,可以试试这个
先说网上无效的方法(个人尝试无效,不具有代表性):网上第一个说法:把IIS给关了,Windows10系统本身IIS是处于禁用状态的,并且没有额外安装IIS和启动IIS。网上第二个说法:和SQL Server有关,做PHP开发的,很少用SQL Server。大多用MySQL。装都没装,所以这不可能。网上第三个说法:系统有问题,D a o B a n系统或有B毒,也不是,之前能用的,不是系统问题。网上第四个说法:执行类似:netstat -aon | findstr :80;netsh http sh原创 2021-04-03 22:21:09 · 2787 阅读 · 0 评论 -
Vue常见面试题(附加答案)
Vue常见面试题原创 2022-01-16 16:33:17 · 455 阅读 · 0 评论 -
用PHP封装一个强大且通用的cURL方法
【代码】用PHP封装一个强大且通用的cURL方法。原创 2023-08-09 10:30:14 · 288 阅读 · 0 评论 -
计算机底层为什么要用补码,而不用原码或反码?
计算机底层为什么要用补码存储,而不用原码或反码?概念比特与字节计算机是依二进制的方式进行存储的,最小的存储单元是“比特(bit)“,或者称作“位“,这是二进制的概念,相对于10进制的就是个十百千万这样的位。但计算机在存储的时候是按8个比特位“为一个“字节(byte)“进行存储的,即1byte = 8bit。1个比特可以表示两种信息,8个比特就可以表示可以存储28种信息,即256种不同的信息。所以用一个字节来表示整数的话就是0-255,。这个区间数字的应用也非常的多,举一个最常见的例子:RGB颜色的原创 2021-03-07 18:18:48 · 1114 阅读 · 1 评论 -
Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置
Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置原创 2023-10-13 11:54:23 · 97 阅读 · 0 评论 -
Vue父子组件6种通信总结合集
Vue父子组件通信的6种常用方式原创 2022-01-08 23:01:31 · 149 阅读 · 0 评论 -
浅谈PHP框架中类成员方法的类类型形参是怎么利用ReflectionClass反射类自动实例化的(应该是全网首发)
浅谈PHP框架中类成员方法的类类型形参是怎么利用ReflectionClass反射类自动实例化的(应该是全网首发)原创 2023-11-03 15:58:02 · 243 阅读 · 0 评论 -
封装一个PHP可控限速下载文件的方法
【代码】封装一个PHP可控限速下载文件的方法。原创 2023-10-26 01:57:28 · 394 阅读 · 0 评论 -
基于Laravel封装一个强大的请求响应日志记录中间件
基于Laravel封装一个强大的请求响应日志记录中间件原创 2023-10-23 23:08:25 · 593 阅读 · 0 评论 -
PHP-FPM与Nginx通信报 502 Bad Gateway或504 Gateway Timeout终极解决方案(适用于PHP执行耗时任务情况下的报错)
PHP-FPM与Nginx通信报 502 Bad Gateway或504 Gateway Timeout终极解决方案(适用于PHP执行耗时任务情况下的报错)原创 2023-10-12 14:32:48 · 410 阅读 · 0 评论 -
浅谈PHP结合JavaScript SSE(Server Sent Events)实现服务器实时推送功能
浅谈PHP结合JavaScript SSE(Server Sent Events)实现服务器实时推送功能原创 2023-09-23 02:39:33 · 1456 阅读 · 0 评论 -
PHP用Swoole的WebSocket功能编写聊天室Demo
"WebSocket 已断开连接""WebSocket 错误:"'进入聊天室</p>''离开聊天室</p>'原创 2023-06-24 17:01:18 · 247 阅读 · 0 评论 -
浅谈PHP设计模式的访问者模式
浅谈PHP设计模式的访问者模式原创 2023-01-27 22:36:53 · 92 阅读 · 0 评论 -
浅谈PHP设计模式的享元模式
浅谈PHP设计模式的享元模式原创 2023-01-26 18:28:47 · 115 阅读 · 0 评论 -
浅谈PHP设计模式的中介者模式
浅谈PHP设计模式的中介者模式原创 2023-01-26 17:10:22 · 70 阅读 · 0 评论 -
浅谈PHP设计模式的命令模式
浅谈PHP设计模式的命令模式原创 2023-01-25 22:09:27 · 62 阅读 · 0 评论 -
浅谈PHP设计模式的组合模式
浅谈PHP设计模式的组合模式原创 2023-01-24 23:59:07 · 109 阅读 · 0 评论 -
PHP实现动态修改.env文件配置(适用于任何框架)
PHP实现动态修改.env文件配置(适用于任何框架)原创 2023-01-14 21:08:44 · 600 阅读 · 0 评论 -
浅谈PHP设计模式的状态模式
浅谈PHP设计模式的状态模式原创 2023-01-06 21:30:33 · 95 阅读 · 0 评论 -
浅谈PHP设计模式的建造者模式
浅谈PHP设计模式的建造者模式原创 2023-01-06 21:16:01 · 73 阅读 · 0 评论 -
浅谈PHP设计模式的备忘录模式
浅谈PHP设计模式的备忘录模式原创 2022-11-11 16:06:57 · 125 阅读 · 0 评论 -
浅谈PHP设计模式的模板方法模式
浅谈PHP设计模式的模板方法模式原创 2022-11-10 20:46:23 · 137 阅读 · 0 评论