PHP
文章平均质量分 53
qq_45490619
这个作者很懒,什么都没留下…
展开
-
分批批量下载文件的思路(PHP伪代码)
原因一次性下载的文件过多时,容易出现超时;压缩包过大也可能会出现问题原理分批思想(借鉴分页)js的异步编程递归思想实现步骤1. 服务端加强安全的措施限制ip用户必须登录使用分布式锁一般是redis实现的,key为唯一值,值为允许操作的参数【如一次只能一个用户下载,因此值为用户id】,设置有效期;因为是分批请求,所以检验时先判断能不能加上锁,能加上锁就继续,不能加上锁则判断是不是允许的值,不是则返回失败结果每次请求时给锁续上时间,下载完成后才解锁;要注意释放锁(服务端原创 2021-08-18 20:41:10 · 340 阅读 · 0 评论 -
解决使用Guzzle包token错误重试时修改query的token值
1.关键环境laravel版本:5.4guzzlehttp/guzzle:6.3.32.额外知识使用 Guzzle 中间件进行请求重试的demo地址:https://learnku.com/articles/31855Guzzle源码学习地址:https://segmentfault.com/p/1210000011674167/read有兴趣的可以学习它的源码3.相关代码(1)修改GuzzleHttp\Psr7\Uri的源码,新增一个修改当前对象的query属性的方法 /**原创 2020-11-15 15:56:00 · 601 阅读 · 2 评论 -
阿拉伯数字转中文数字(使用PHP实现)
中文数字的特点每个计数数字都跟着一个权位,权位有:十、百、千、万、亿。以“万”为小节,对应一个节权位,万以下没有节权位。每个小节内部以“十百千”为权位独立计数。每个小节内部的“十百千”不能连续出现,而“万”和“亿”作为节权位时可以和其他权位连用,如:“二十亿”。中文数字对“零”的使用要满足以下三条规则以10000为小节,小节的结尾即使是0,也不使用零。小节内两个非0数字之间要使用“零”。当小节的“千”位是0时(即:1~999),只要不是首小节,都要补“零”。算法设计的一些说明:原创 2021-08-17 20:48:28 · 1272 阅读 · 0 评论 -
利用laravel队列实现异步间隔推送,类似微信支付通知推送
推送过程中可能会出现失败的情况且比较耗时,为了尽可能保证推送成功,我们一般使用队列进行推送并且进行重试。原创 2021-01-18 20:15:20 · 795 阅读 · 0 评论 -
PHP模仿百度分页,兼容奇偶数的分页条长度
环境PHP7.2MYSQL5.7NGINX1.18centos7分页简介1.为什么使用分页当数据太多时,一次性完全部会非常消耗性能、网络,而且使得页面不美观2.如何实现分页利用mysql的limt来实现来作分页,核心参数有两个,start与size,即开始的位置与每页显示的数量。sql语句:select * from 表名 limit 开始的位置,数量3.本文的分页结构代码实现<?phpheader("Content-Type: text/html; char原创 2021-01-14 21:30:55 · 129 阅读 · 0 评论 -
PHP数组key的强制转换以及in_array的注意事项
背景某个仓促上线项目的复杂查询使用到了in_array和使用数组的key进行判断是否在数组里,导致某些结果不符合预期。数组key的强制转换的例子<?php$arr = [ '0' => '0', '1-3' => '1-3', '20-30' => '20-30', '30-50' => '30-50', '>50' => '大于50',];echo "<pre>";foreach ($arr as原创 2020-12-23 20:49:31 · 399 阅读 · 0 评论 -
PHP实现数字转为Excel字母
1.前言这是借鉴某位大哥(大姐)的写法,主要是消除了递归。2.具体代码//根据数字转换成excel的字母function numToExcelLetter($num){ //由于大写字母只有26个,所以基数为26 $base = 26; $result = []; while ($num > 0 ) { $mod = (int)($num % $base); $num = (int)($num / $base);原创 2020-11-06 20:21:24 · 444 阅读 · 1 评论