PHP
文章平均质量分 54
caidongxuan
这个作者很懒,什么都没留下…
展开
-
网上PHP+Redis分布式锁的实现都有问题
除了使用,使用Lua脚本,保证SETNX + EXPIRE两条指令的原子性,我们还可以巧用Redis的SET指令扩展参数!假使执行完setnx加锁,正要执行expire设置过期时间时,进程crash了,那么这个锁就“长生不老”了,别的客户端就永远获取不到锁啦。假设A客户端要去释放锁时,获取完锁的信息后,锁就过期,并且被B客户端获取了锁,A客户端因为得到的是旧数据,以为锁是自己的,会把锁释放掉。这两份代码,虽然解决原子性问题,但是没有解决,任务执行时间超过锁的超时时间,锁过期的,业务还没执行完问题。原创 2022-09-20 11:05:14 · 294 阅读 · 0 评论 -
PHP正则的递归写法,解决类似括号嵌套问题
业务开发需要把SQL转成Array,在匹配()时,遇到括号里还有括号的情况。原有的正则是这样写的/\([^\)]+\)/当出现括号里还有括号的情况,字段数据解析错误。经过寻找,有一种正则的递归写法,叫Recursive pattern,关键字?R。举个例子/a(?R)*/ 表示/a(正则本身(正则本身).....)*/,也就等于/a(a(a).....)*/表示连续多个a回到括号...原创 2020-04-01 15:35:33 · 402 阅读 · 0 评论 -
PHP做文件下载服务解决方案
要求:文件有权限验证。文件大小可能会很大。性能要好。传统做法一:直接源始地址下载就是直接给出文件的地址 http://www.xxx.com/file.rar,这种方式最直接,性能好,文件大小无限制,但没办法做权限验证。传统做法二:PHP中转下载例子代码:header("Content-Type:application/octet-stream;charset=utf-8");...原创 2020-04-01 15:28:46 · 649 阅读 · 0 评论