php
php
骷大人
这个作者很懒,什么都没留下…
展开
-
PHP使用AES进行加解密
对接一个第三方平台,其使用AES对称加密。原创 2024-03-13 16:51:10 · 673 阅读 · 0 评论 -
高并发下使用redis实现分布式锁
高并发下redis使用nx sex命令和lua脚本分别实现分布式锁。原创 2023-05-29 15:33:37 · 208 阅读 · 0 评论 -
内外网隔离下,通过网关转发,来部署前后端分离的系统
最近为某银行系统部署了一套商城系统,网络环境比较特别,思路记录下,其中商场系统使用前后端分离模式部署。原创 2023-05-24 17:55:22 · 1190 阅读 · 0 评论 -
php7使用openssl_sign函数进行RSA加密,openssl_verify解密
之前写过篇使用AES做加解密的文章,这次有个跟银行对接支付的需求,需要用RSA私钥进行加解密,对方提供了两个文件private.pfx私钥,外加私钥密码123456public.cer公钥,其中.cer公钥可以直接用,.pfx私钥需要通过密码来提取后使用。原创 2023-05-23 15:05:59 · 447 阅读 · 0 评论 -
mysql各事务隔离级别(类型)介绍
mysql各事务隔离级别(类型)介绍原创 2023-04-24 17:40:09 · 434 阅读 · 0 评论 -
laravel清除应用和配置缓存
laravel系统中使用着许多缓存,修改程序和配置后没有效果,往往是因为缓存的关系。手动去目录删除过于麻烦,可以用artisan命令来实现。原创 2023-04-23 13:28:07 · 1248 阅读 · 0 评论 -
Postman使用js生成url入参
很多接口都有sign参数,规则是将地址栏的参数加密后生成,有时候前端的生成的sign跟服务端生成的不匹配,这个时候可以将前端的sign代码要过来,在postman执行js生成sign参数后去后台打断点对比。原创 2023-04-17 11:34:45 · 405 阅读 · 0 评论 -
多个PHP版本下如何使用composer
本地运行一个PHP7.3的项目,现在还需要跑一个PHP7.4的项目,但是compsoer安装时候绑定的php版本,如何在使用composer的时候自由指定php版本呢?以下是windows操作,linux同理。原创 2023-04-13 10:30:48 · 798 阅读 · 0 评论 -
使用docker部署mongodb
使用docker部署mongodb,并实现持久化。这就完成了,很方便。可以用show databases看数据库列表,show tables看表列表(集合)。持久化我测试了,容器删除后,重新用run跑起来一个,之前创建的用户和数据库还在。用-v做目录映射等于做了持久化,容器删除新建后数据还在。(如物理机目录不存在,run时会自动创建)如题,使用docker部署mongodb,并实现持久化。容器内有/bin/mongosh这个文件。原创 2023-03-21 15:48:27 · 400 阅读 · 0 评论 -
./configure怎么用
其实./configure、make、makeinstall这三个命令,我们可以用&&来把命令连接起来执行,表示当前一条命令正常结束后,后面的命令才会执行,这个办法很好,既节省时间,又可以防止发生错误。例:./configure&&make&&makeinstall正常的编译安装/卸载:源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。configure...转载 2021-07-02 10:09:34 · 20601 阅读 · 0 评论 -
PHP的闭包
对于php来说,闭包和匿名函数其实一样。简单来写几个经常用到的形式。原创 2023-03-10 21:39:28 · 283 阅读 · 0 评论 -
使用docker部署宝塔环境
经常需要部署lnmp环境,宝塔是一个不错的选择,包括安装各种插件,添加网站,设置定时任务等都非常方便。这次使用docker来部署。原创 2023-03-09 21:05:12 · 1450 阅读 · 0 评论 -
PHP面试宝典2023
php面试时经常会问一些理论性的问题,给大家整理了些,很多都是网上找的,难免有不严谨的地方,望请大家指正,共勉原创 2023-03-09 20:44:20 · 1489 阅读 · 0 评论 -
Thinkphp6使用RabbitMQ消息队列
Thinkphp6连接使用RabbitMQ(不止tp6,其他框架对应改下也一样),如何使用Docker部署RabbitMQ,在上一篇已经讲了。原创 2023-03-03 22:44:37 · 2762 阅读 · 1 评论 -
PHP三个点的用法
项目上看到一个写法getData( …$data),入参带了三个点,之前基本没用过,网上查了下,功能是将参数在数组和可变数量的参数间转换。原创 2023-02-26 16:45:47 · 418 阅读 · 0 评论 -
高并发用redis的zset类型缓存数据
高并发的情况下,过滤黑名单。使用redis的zset(有序集合)判断,ip是否属于其中。原创 2023-02-26 15:09:31 · 237 阅读 · 0 评论 -
HasOne和BelongsTo的区别
laravel的ORM中HasOne和BelongsTo每天用,但主键外键顺序不同,has和belongsto也不同,所以一次记录一下,以后按这个来。原创 2023-02-22 18:20:27 · 306 阅读 · 0 评论 -
使用workerman/mqtt做队列(订阅)
手上有个需求,第三方门禁触发后数据推送过来,对方使用的是mqtt来传输,这次还是用workerman的mqtt组件来实现,流程跟前篇讲的部署workman/redis队列基本都一样。原创 2022-12-02 15:06:02 · 1149 阅读 · 0 评论 -
使用微信公众号做模板消息推送
需要做一个微信公众号推送的业务,看了下有以下三种类型,这边选择模板方式。模板消息:此消息可以群发,可以单发,发送次数不受限制,但是发送模板的内容必须经过微信官方审核。向单个粉丝发送消息:此种功能发送次数没有限制,但是接受消息的粉丝必须在48小时内与服务号有互动,否则服务号的消息发送不出去。群发消息:给所有关注此微信的人同时发送,但每个月的发送次数有限制。原创 2022-11-25 15:18:04 · 2307 阅读 · 6 评论 -
php7使用openssl_encrypt函数进行AES加密
手上有个api对接需求,要用到AES加密,要用到openssl_encrypt函数,记录一下,鉴权要求大概如下。将明文先base64加密,后取前16位判断字符串的字节型数据长度是否为16倍整,如不是则进行补充(PKCS#7标准对字符串进行AES加密后base64加密,其中$data 加密明文$method 加密方法 这里使用$passwd 加密密钥$options 数据格式选项(可选)$iv 密初始化向量(可选)原创 2022-11-23 16:05:26 · 2683 阅读 · 0 评论 -
composer安装的插件版本不适配如何卸载重装
不小心安装了一个不适配本地php环境的composer插件,我本地PHP7.2,安装的插件需要>=7.3,则需要卸载重装。原创 2022-11-14 18:12:53 · 979 阅读 · 0 评论 -
thinkphp6使用PhpOffice导入导出excel
项目后台使用Thinkphp6+layuiAdmin,经常用到导入导出excel的功能,记录一下。原创 2022-11-14 16:11:52 · 1818 阅读 · 0 评论 -
PHP海报生成文字图片合成类
前言:将二维码放到背景图中(生成二维码的方法在前文中已经讲了>>传送门<<) public function mix(Request $request){ $codePath = '/public/static/images/code.png';//二维码路径 $bgImgPath='/public/static/images/background.png';//待合成的背景图路径 $outFilePath="/public/upload/invit.原创 2022-03-26 14:02:39 · 376 阅读 · 0 评论 -
TP6使用qrcode生成二维码
经常会碰到系统根据地址生成二维码的使用场景,如健康码,分享商品,邀请用户注册等,使用qrcode生成二维码非常方便,它支持带logo或者不带,也可以设置二维码大小。composer require dh2y/think-qrcodeuse dh2y\qrcode\QRcode;public function index() { $code = new QRcode(); $res = $code->png('https://www.baidu.com.原创 2022-03-26 11:16:54 · 1950 阅读 · 0 评论 -
使用企业微信做微信消息通知
一.前期准备1.扫码进入企业微信后台,获取企业idhttps://work.weixin.qq.com/wework_admin/loginpage_wx2.依次进入应用管理-应用-自建-创建应用,自己创建完成后获取 应用secret,应用AgentID和成员id前两个直接填,如果给所有人推送填@all(这里的所有人指的是已经添加到可见范围内的成员),如果指定某个接收者直接填id,多个接收者用‘|’分隔。3.点击自建应用下方的发消息,依次选择素材库-图片-添加图片,上传完成后从下载原创 2022-03-26 10:29:04 · 4996 阅读 · 0 评论 -
使用phpOffice导入excel和word
项目中要用到通过phpexcel和word导入数据,这次使用了phpOffice,excel识别的很准确,导入的word中还能保留图片(会转成base64)非常好用。首先使用composer安装composer require phpoffice/phpspreadsheet导入excel$file = root_path()."public\\excel\\plan.xlsx";$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load.原创 2022-03-04 09:36:36 · 1265 阅读 · 1 评论 -
php设计模式之观察者模式
观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新得逻辑增多之后,代码会变得难以维护.这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码观察者模式实现了低耦合,非侵入式的通知与更新机制/** * 事件产生类 * Class EventGenerator */abstract class EventGenerator{ p原创 2022-01-25 14:58:07 · 540 阅读 · 0 评论 -
php设计模式之管道模式
1.对于管道模式来说,有3个对象:管道,载荷,过滤器(阶段,阀门均可)。我们的目的是在管道中对载荷进行一系列的处理。因为可以对过滤器进行动态的添加,所以对载荷的处理可以变得更加灵活。但同时带来的问题是,在过滤器过多时,我们很难把握整体的处理逻辑。而且在某一个过滤器对载荷处理后,因为载荷改变, 会造成下一个过滤器中的逻辑出错。2.在我们的示例中:管道类是Pipeline,载荷是在实例化Pipeline时传递的payLoad,过滤器是所有实现StageInterface的类。在web应用中,在服务器将请原创 2022-01-25 11:40:20 · 433 阅读 · 0 评论 -
RPC和RestFul的区别是什么?
RestFul和RPC的区别1、从本质区别上看,RPC是基于TCP实现的,RESTFUL是基于HTTP来实现的。2、从传输速度上来看,因为HTTP封装的数据量更多所以数据传输量更大,所以RPC的传输速度是比RESTFUL更快的。3、因为HTTP协议是各个框架都普遍支持的。在toC情况下,因为不知道情况来源的框架、数据形势是什么样的,所以在网关可以使用Restful利用http来接受。而在微服务内部的各模块之间因为各协议方案是公司内部自己定的,所以知道各种数据方式,可以使用TCP传输以使各模块之间转载 2022-01-18 10:16:01 · 904 阅读 · 0 评论 -
php 处理库存超卖的几种处理方法
第一种方法:使用mysql数据库的锁机制。在事务中使用 for update 语句,在事务处理完成之后释放这一条数据。代码使用tp5的框架:public function mysqlLock(){$goods_id = 26545;$sku_id = 26545;$price = 300;$user = '';StoreOrderModel::startTrans();$nums = StoreOrderModel::where(['id'=>1])->fiel.转载 2021-12-30 11:31:03 · 1016 阅读 · 0 评论 -
linux的configure,make和make install命令怎么用
configure(配置)configure文件是一个可执行的脚本文件,它有很多选项。其中–prefix选项是配置安装目录,如./configure --prefix=/usr/local/test,若不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱,且安装在一个目录后续删除和复制都比较容易(操作应用文件夹就好)。configur原创 2021-12-07 14:54:04 · 1522 阅读 · 0 评论 -
使用Dockerfile一键部署lnmp环境
之前文章写过使用docker配置lnmp环境,但都是分别拉取nginx,php-fpm,mysql等镜像,分别run后,用端口互通,->传送门原创 2021-12-02 11:58:10 · 5161 阅读 · 0 评论 -
nginx和php7各配置文件详解
lnmp开放环境中,有各种配置文件,conf结尾的,d结尾的,ini结尾的等等,了解这些配置文件各自的用途,对我们深入理解其工作方式和排查问题至关重要。php7安装后的PHP7配置文件所在路径是 /usr/local/php7/etc 。该目录下会有两个配置文件: php.ini 和php-fpm.conf ,以及一个文件夹 php-fpm.d (包含 www.conf 文件)。php.ini是php运行核心配置文件:######避免PHP信息暴露在http头中expose_php = Of原创 2021-11-30 17:19:32 · 3027 阅读 · 0 评论 -
使用docker搭建lnmp环境
nginx1.批量创建文件夹[root@localhost ~] mkdir -pv /lnmp/nginx/{conf/conf.d,data,logs}2.在/lnmp/nginx/conf/conf.d下放置default.conf,否则容器内不会存在default.conf文件点我下载3.启动容器[root@localhost ~] docker pull nginx[root@localhost ~] docker run -id --name nginx \-p 80:80 \原创 2021-11-24 16:49:31 · 3077 阅读 · 0 评论 -
php 普通函数和静态方法
静态方法属于类,随着类的加载而加载,程序在加载类的时候已经为静态方法分配了内存非静态方法属于对象,对象是在雷佳在之后创建静态方法先于对象存在,创建一个对象时,程序为其分配内存,通过this指针访问指向对象。静态方法不依赖于对象的调用,它是通过类名::静态方法名这样的方式来调用的。对于非静态方法,在对象创建的时候程序才会为其分配内存,然后通过对象去访问非静态方法对象未存在时,非静态方法也不存在,静态方法也就调用不到一个不存在的方法...转载 2021-09-29 14:28:55 · 86 阅读 · 0 评论 -
PHP匿名函数和闭包区别
匿名函数$func = function($param){ echo($param); }; $func('hello world');闭包function func($param){ return function() use(&$param){ $param++; echo $param; };}$content = func('hello world');$content();原创 2021-09-28 17:19:40 · 105 阅读 · 0 评论 -
array_merge和+的区别
php数组合并中的这两个方法,以前都是想到哪个用哪个,今天来仔细研究下他们的区别‘+‘键名出现重复,不管是数字还是字符,统一使用首次出现的,丢弃后面出现的(前面覆盖后面)。'array_merger’如果是字符,则使用后面出现的,丢弃前面出现的,如果是数字则全部保留(后面覆盖前面)。...原创 2021-07-15 16:44:40 · 446 阅读 · 1 评论 -
浅谈PHP中的Trait使用方法
概述在PHP中有一种代码复用的技术, 因为单继承的问题, 有些公共方法无法在父类中写出, 而 Trait可以应对这种情况, 它可以定义一些复用的方法, 然后在你需要使用的类中将其引入即可.刚开始的时候给我的感觉就是将trait代码块直接拿到类中的意思, 但后来我发现, 我太天真了.PHP中的Trait用法:问题当我第一次使用的时候, 因为之前一直使用抽象类, 或者定义内部对象, 然后调用内部对象中的方法, 所以我当时有了以下几个问题:1.能否引入多个, 如果可以的话, 同名方法如转载 2021-07-08 16:20:17 · 1304 阅读 · 1 评论 -
Linux使用phpize安装php扩展的方法和步骤
应用场景在使用php的过程中,我们常常需要去添加一些PHP扩展库。在window环境中是很方便的,只要将扩展的dll文件放到php安装目录的ext目录中,然后在php.ini最后添加一条extension=扩展.dll后重启就好。本文主要讲在linux环境中的安装。为什么要使用phpize正常linux下新增扩展是需要重新编译安装php的,所以这时候我们可以使用phpize,并且phpize编译的扩展库可以随时启用或停用,比较灵活。假设我们需要安装xdebug扩展wget https://xde原创 2021-05-29 13:58:13 · 3183 阅读 · 0 评论 -
什么是一致性Hash算法?
一、Redis集群的使用我们在使用Redis的时候,为了保证Redis的高可用,提高Redis的读写性能,最简单的方式我们会做主从复制,组成Master-Master或者Master-Slave的形式,或者搭建Redis集群,进行数据的读写分离,类似于数据库的主从复制和读写分离。如下所示:同样类似于数据库,当单表数据大于500W的时候需要对其进行分库分表,当数据量很大的时候(标准可能不一样,要看Redis服务器容量)我们同样可以对Redis进行类似的操作,就是分库分表。假设,我...转载 2021-05-19 10:52:49 · 1502 阅读 · 1 评论