
php高级知识
do better myself
学无止境、只有不断的学习,你才不会被社会淘汰!加油吧!少年!
展开
-
钉钉申请发起后台提现接口
//后台调用审批发起钉钉申请,调用新的模版public function add_process_20220420($admin_id,$audit_id){ $user_config = [2=>'01165521626229482399',17=>'16086285874694657',26=>'01165521626229482399',27=>'036548146626773039'];//用户配置 $dep_id_config = [2=>'4.原创 2022-04-21 15:43:25 · 442 阅读 · 0 评论 -
redis底层数据结构总结
hash : 是一维数组加链表ziplink:压缩列表相当于数组,链表查询速度快,查找慢跳表:是个有序的链表,实现有序数组的二分查找,缺点是占用更多的内存空间。跳表是每隔2个元素选出一个索引的key,提升查询效率集合可以实现抽奖,微信点赞,收藏功能hash可以实现购物车存储,用户id为key,商品id为field,商品数量为value...原创 2021-11-26 13:15:45 · 580 阅读 · 0 评论 -
redis hash 集合使用
//hash使用 $key='vv'; $num = Cache::store('redis')->handler()->hset($key,'2021-01-14',1.6); $a = Cache::store('redis')->handler()->hgetall($key); print_r($a);return 555; //集合使用 $num =...原创 2021-01-22 17:13:01 · 298 阅读 · 0 评论 -
php 获取当前日期往前推一周的时间
$week_price_list = [];for ($datetime = time(); $datetime > time() - 86400*7; $datetime = $datetime - 86400) { $date = date('Y-m-d', $datetime); $price = Cache::store('redis')->handler()->ZSCORE('hxyg_btc_price',$date); if ($price) { .原创 2021-01-22 16:29:49 · 1349 阅读 · 0 评论 -
php 一维数组拼接到二维数组后面
$list = [ ['name'=>'thinkphp','email'=>'thinkphp@qq.com','color'=>'thinkphp@qq.com'], ['name'=>'onethink','email'=>'onethink@qq.com','color'=>'thinkphp@qq.com']];$new = ['http:www.a.img','http:www.b.img'];foreach($list as $...原创 2020-09-29 15:48:57 · 568 阅读 · 0 评论 -
如何设计一个安全的对外接口?
https://www.jianshu.com/p/d0f7a459dc69如何实现以上大体介绍了一下常用的一些接口安全措施,当然可能还有其他我不知道的方式,希望大家补充,下面看看以上这些方法措施,具体如何实现;1、数据加密现在主流的加密方式有对称加密和非对称加密;对称加密:对称密钥在加密和解密的过程中使用的密钥是相同的,常见的对称加密算法有DES,AES;优点是计算速度快,缺...转载 2020-04-03 09:20:35 · 247 阅读 · 0 评论 -
订单分表和redis分布式锁的实现,数据库innodb3种锁的实现
学习了淘宝的订单系统设计,将订单拆分为买家库、卖家库,消息中间件进行订单同步(类似于方案1、2的对买家、卖家分表么),似乎是不关注订单数据冗余,但没想明白如何按照订单查询,所以借鉴设计了方案3:(1)按照userId取模分表(2)按照sellerId取模分表(3)按照orderId取模分表相比方案1、2,少维护了一张表,但有两份数据冗余订单水平分库分表,为什么要按照用户id来切分呢...原创 2020-03-30 18:19:41 · 478 阅读 · 0 评论 -
redis解决超卖的实现
https://blog.youkuaiyun.com/NIUBILISI/article/details/89881287?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task原创 2020-03-26 11:17:35 · 989 阅读 · 0 评论 -
使用PHPqrcode根据Url生成图片二维码
https://blog.youkuaiyun.com/NIUBILISI/article/details/89881287?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-taskhttps://blog.youkuaiyun.com/RuiKe1400360107/a...原创 2023-06-13 10:57:28 · 2029 阅读 · 0 评论 -
文件上传excel跨域解决的方法
文件上传报错跨域问题,在网上找了好多中间件加判断什么的,去修改nginx的配置什么的,都不管用,后来在调用的方法的第一行加上header("Access-Control-Allow-Origin: *"); 就成功了。我太难了。...原创 2020-01-09 15:06:32 · 1250 阅读 · 2 评论 -
用PHP解决“约瑟夫环”的几种方法
方法二:递归算法function killMonkey($monkeys , $m , $current = 0){ $number = count($monkeys); $num = 1; if(count($monkeys) == 1){ echo $monkeys[0]."成为猴王了"; return; } else{ while($num++ < $m)...转载 2019-10-22 14:25:51 · 179 阅读 · 0 评论 -
前端传过来的参数是字符串的,需要转换一下再组成字符串
{"beginDate":"2019-04-01","endDate":"2019-04-25","indexCode":"000001","current":1,"size":"2","indexArray":[{"parentId":0,"childId":"0,1"}]}:$param['indexArray'] = $request->get('indexArray')...原创 2019-06-24 18:24:14 · 1296 阅读 · 0 评论 -
PHP-FPM及其三种运行方式
https://blog.youkuaiyun.com/njrclj/article/details/85062459转载 2019-06-26 15:15:26 · 511 阅读 · 0 评论 -
数据结构之------什么是哈希表?(哈希表是一个以空间换取时间的数据结构!!! 加快查找速度!!!)
结合http://www.cnblogs.com/feichengwulai/articles/3523905.html这篇文章一起记忆!!!@哈希表的实际应用1,Sql中的索引,就是通过哈希表实现的。加大了数据存储空间,但查询速度快了很多!!!---具体可以查哈希表的应用!!!@什么是哈希表?1,google搜索到的头条: 散列表(也叫哈希表),是根据关键码值直接...转载 2019-06-21 17:10:57 · 1271 阅读 · 0 评论 -
如何设置phpstorm上传ftp提交文件
最后一步MAPPING 是指向本地代码的存放路径原创 2019-05-29 20:39:01 · 1822 阅读 · 0 评论 -
运维之常用巡检命令
Linux系统需要定期巡检,以检查服务器软硬件使用情况,相当于对人的体检,确保可以及时发现问题、解决问题,降低损失,常用的巡检命令如下:# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue # 查看操作系统版本# cat /proc/cpuinfo # 查看CPU信息# hostname # 查看计算机名# lspci -tv # 列出所...转载 2019-06-05 13:49:29 · 3516 阅读 · 0 评论 -
array_multisort 根据二维数组从小到大排列
$cartonn_arr = array('cat_id'=>6,'banner_url'=>array(make_images_url($banner_img)));foreach ($shareInfo as $k=>$val){ $new[$k]['cat_id'] = $val['cate_id']; $new[$k]['banner_url'] ...原创 2019-08-01 15:59:20 · 330 阅读 · 0 评论 -
网站证书过期如何操作
1.需要把服务器上的(182的)新的证书的2个文件替换之前的文件2.还得需要替换代理服务器上(163的)的证书文件3.重启nginx服务器。。。原创 2019-04-25 11:23:18 · 2351 阅读 · 0 评论 -
MySQL双主一致性架构优化
一、双主保证高可用MySQL数据库集群常使用一主多从,主从同步,读写分离的方式来扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式来保证写库的高可用。二、并发引发不一致数据冗余会引发数据的一致性问题,因为数据的同步有一个时间差,并发的写入可能导致数据同步失败,引起数据丢失:如上图所述,假...转载 2019-06-27 17:51:35 · 144 阅读 · 0 评论 -
Nginx 502错误原因和解决方法总结
一. 前沿不管你是做运维还是做开发,哪怕你是游客,时不时会遇到502 Bad Gateway或504 Gateway Time-out。出现这页面,把服务重启下,再实在不行重启下服务器,问题就解决了,特殊情况请继续阅读。二. 状态码解释502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。504 Gateway T...转载 2019-07-09 10:56:33 · 79419 阅读 · 0 评论 -
分析系统瓶颈的命令 dstat 使用
系统层面系统层面指标有Cpu、内存、磁盘、网路等,推荐用一个犀利的命令查询系统性能情况:dstat -lcdngydstat非常强大,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况。安装方法yum install -y dstat功能说明...原创 2019-06-28 14:58:27 · 431 阅读 · 0 评论 -
解析一致性哈希算法
前言在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法就容易多了,也更能体现出一致性哈希算法的优点。那么,我们先来描述一下这个经典的分布式缓存的应用场景。应用场景假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在有三万张图片需要缓存,我们希望这些图片被均匀地缓存到这三台服务器上,以便它们...转载 2019-07-04 14:03:29 · 190 阅读 · 0 评论 -
git配置文件,不想提交某类文件到服务器
当不想提交某一类型的文件到服务器的时候,可以使用.gitignore文件来进行配置,编辑.gitignore文件来进行配置即可,例如我不想提交所有的.swf文件,这时就可以在.gitignore文件里面写入如下内容[root@LiuQi flash]#cat.gitignore *.swf [root@LiuQi flash]# vi .gitignore 编辑完保存...原创 2019-07-30 11:07:24 · 1408 阅读 · 0 评论 -
laraval 依赖注入
laravel 模块 服务提供者是什么? 服务提供者是所有 Laravel 应用程序引导启动的中心, Laravel 的核心服务器、注册服务容器绑定、事件监听、中间件、路由注册以及我们的应用程序都是由服务提供者引导启动的。 IoC 容器是什么? IoC(Inversion of Control)译为 「控制反转」,也被叫做「依赖注入」(DI)。什么是「控制反转」?对象 A 功能...原创 2019-08-02 17:25:55 · 138 阅读 · 0 评论 -
如何保证接口的幂等性
什么是幂等性幂等性是系统服务对外一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。什么情况下需要幂等以SQL为例:SELECT col1 FROM tab1 WHER col2=2,无论执行多少次都不会改变状态,是天然的幂等。UPDATE tab1 SET col1=1 WHERE col2=2,...转载 2019-08-28 09:32:30 · 807 阅读 · 0 评论 -
laravel 依赖注入的解释
依赖注入,你可以分开理解。拆成,依赖和注入依赖:就是你现在要用 request 对象的get 方法,所有你必须要先能得到request对象,然后才能使用这个方法。这个就是依赖。注入:怎么得到request 对象呢?一种是你直接 $request =new Request() 可以得到,这种也称为主动获取,还有一种就是把整个对象当做一个参数传进来,类型你截图这种,然后去使用。这个就是依赖注入...原创 2019-08-28 15:35:01 · 908 阅读 · 0 评论 -
swoole多进程操作
多个任务同时执行将顺序执行的任务,转化为并行执行(任务在逻辑上可以并行执行)比如,我们要对已知的用户数据进行判断,是否需要发送邮件和短信,如果需要发送则发送。不使用多进程时,我们首先判断是否发送邮件,如果需要则发送;然后再判断是否需要发送短信,如果需要则发送。如果发送邮件耗时2s,发送短信耗时2s,那么我们完成任务大概需要4s左右的时间。如果我们使用多线程的话,可以开两个线程,一个用于处理邮件,一...转载 2018-03-28 09:42:31 · 2419 阅读 · 1 评论 -
web 登陆控制只能在一个设备登陆的实现方法
1.原理就是用户登陆成功后往redis写一个唯一的token,每次用户登陆都会把之前的删除掉,生成新的token.2.假如用户之前在本地环境登陆了,然后又去测试环境登陆成功后,你再点击之前的本地的我的账户的话,之前的本地的token就失效了,就会有提示...原创 2019-04-17 18:31:10 · 3029 阅读 · 0 评论 -
分布式事务解决方案?
2、eBay 事件队列方案——最终一致性eBay 的架构师Dan Pritchett,曾在一篇解释BASE 原理的论文《Base:An Acid Alternative》中提到一个eBay 分布式系统一致性问题的解决方案。它的核心思想是将需要分布式处理的任务通过消息或者日志的方式来异步执行,消息或日志可以存到本地文件、数据库或消息队列,再通过业务规则进行失败重试,它要求各服务的接口是幂等的。...原创 2019-04-02 18:56:11 · 235 阅读 · 0 评论 -
深入 Redis 主从复制的原理详解
https://mp.weixin.qq.com/s?__biz=MzA3MTUzOTcxOQ==&mid=2452966010&idx=1&sn=7f8b119a9eb64b2ce1e9de1148de807a&scene=21#wechat_redirect转载 2019-04-02 16:48:45 · 172 阅读 · 0 评论 -
什么是i/0多路复用技术?
I/O 多路复用技术是指利用单个线程处理多个网络 I/O,我们常说的 select、epoll 就是用来轮询所有 socket 的函数。比如 Apache 采用了前者,而 Nginx 和 Node.js 使用了后者,区别在于后者效率更高。由于 I/O 多路复用实际上还是单线程的轮询,因此它也是一种非阻塞 I/O 的方案。异步 I/O 是最理想的 I/O 模型,然而可惜的是真正的异步 I/O 并不存...原创 2018-05-23 16:57:32 · 1005 阅读 · 0 评论 -
微服务到底是什么?
微服务就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在微服务结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间...原创 2018-05-16 15:16:21 · 1634 阅读 · 0 评论 -
单点登录的实现地址
https://www.cnblogs.com/ywlaker/p/6113927.html转载 2018-05-25 11:31:04 · 852 阅读 · 0 评论 -
php网站 高并发时候如何优化?
利器1.多线程处理利用线程池设计,同时处理多个请求。线程池中线程个数=CPU个数+1;//对计算密集型的情况适用如果程序的逻辑处理需要对 DB,IO,redis 有操作。会增加CPU的占用率。高并发解决方案案例:当QPS达到2000时优化方案: 做业务分离,分布式存储1.流量优化 防盗链处理(去除恶意请求)、限流、限速、限制并发数2.前端优化(1) 减少HTTP请求[将css,js等合并](2)...原创 2018-04-20 17:55:44 · 950 阅读 · 0 评论 -
php并发加锁
CleverCode在工作项目中,会遇到一些php并发访问去修改一个数据问题,如果这个数据不加锁,就会造成数据的错误。下面CleverCode将分析一个财务支付锁的问题。1 没有应用锁机制1.1 财务支付简化版本代码[php] view plain copy<?php /** * pay.php * * 支付没有应用锁 * * Copy right (c) 2016 ...转载 2018-04-19 10:00:03 · 7780 阅读 · 0 评论 -
PHP开发中utf8、utf-8和UTF-8的区别
很多PHPer在开发的过程中,甚至连很多老的程序员,只要程序运行不出问题,都会按照自己的习惯去写。实际上 utf8、utf-8 和 UTF-8 的区别如下: 一、“UTF-8”这是标准写法,在PHP和HTML中设置编码,统一写成“UTF-8”。 举例: PHP中 —— <?php header('Content-Type: text/html; charset=UTF-8'); ?&g...转载 2018-03-28 09:48:46 · 1422 阅读 · 0 评论 -
PHP多进程处理并行处理任务实例
本文目的本文通过例子讲解linux环境下,使用php进行并发任务处理,以及如何通过pipe用于进程间的数据同步。写得比较简单,作为备忘录。PHP多进程通过pcntl_XXX系列函数使用多进程功能。注意:pcntl_XXX只能运行在php CLI(命令行)环境下,在web服务器环境下,会出现无法预期的结果,请慎用!管道PIPE管道用于承载简称之间的通讯数据。为了方便理解,可以将管道比作文件,进程A将...转载 2018-03-28 09:41:59 · 756 阅读 · 0 评论 -
微信红包的算法实现探讨(基于PHP)
今晚突发奇想给校友微信群发了红包,我设定红包总额为10元,支持28个人随机领取。于是一个有趣的结果出现了:A 领取了 0.26元B 领取了 0.29元C 领取了 0.02元D 领取了 0.56元E 领取了 0.64元……微信是采用什么样的算法做到的?简单百度了下,目前尚未有官方的说明,仅仅在知乎里有一个较为热门的讨论,链接戳这里,不过他们讨论的太过于深入,有掉坑之嫌。我按照自己的逻辑尝试了下,这个...转载 2018-03-28 09:37:40 · 824 阅读 · 0 评论 -
将单表600万的数据拆分到20张表的实现方法分享
将之前的单表数据600万按照用户id取模20的方式,拆分到20张表,平均每张表大概30万的数据,先写脚本将线上的老数据读取写入到20张表,记录最大的表的id,从昨天的下班的6点开始跑一直跑到第二天的凌晨4点多数据跑完今天上午10点20上代码测试,没问题了,再把最大的表的id到现在的数据再跑一次,保证数据没有丢失是最新的。最底层的方法:调用: $table_name_str = Util_Tool:...原创 2016-10-13 13:29:20 · 1513 阅读 · 1 评论 -
PHP中删除数组中的元素详解(unset,array_splice)数组元素增删汇总
php中删除数组元素是非常的简单的,主要是unset,array_splice,但是关于两者有,长时间混用,有的时候竟然分不出区别。今天特意总结一下,增加记忆,便于使用。很多地方都这样区别unset,array_splicearray_splice()函数删除的话,数组的索引值也变化了。unset()函数删除的话,数组的索引值没有变化。其实我觉得这样区分是有前提的。[php] view plain...转载 2018-04-02 11:37:20 · 371 阅读 · 0 评论