PHP实用技术总结
文章平均质量分 62
PHP实用技术总结
刘远山
日积月累
展开
-
制作composer包提供sdk扩展
1、初始化包2、将代码推送到github远程仓库3、为写好扩展包打上tag标签标记当前代码版本4、将包发布到包管理平台Creates a basic composer.json file in current directorycomposer init 按照引导就可以生成了 , 详细的引导解释如下随后调整composer.json配置文件,内容示例如下:生成vendor目录编写测试代码src/Test.php后再根目录 创建一下 index.php 引入类执行自动加载命令,为创建的类文原创 2022-12-04 00:48:15 · 827 阅读 · 0 评论 -
RBAC权限实现
rules //组的权限,1,2(这里由数字和逗号拼接组成,每个id代表一个权限id,即rule_id,即auth_rule这个表的主键)2.auth_group表 (用户组表,一个用户可以属于多个组,一个组可以有多个用户,属于多对多,用户连接组对应的权限)3.auth_group_access表(用户和用户组的对应关系,是用户表和用户组表的一个中间表,启动连接作用)mca //既是菜单的url也是权限的url,用户关联权限表。id //rule_id权限id。group_id //组id。原创 2021-04-05 22:39:36 · 561 阅读 · 0 评论 -
PHP设计模式-原生注册模式&在thinkphp6使用即容器与服务
依赖注入其实本质上是指对类的依赖通过构造器完成自动注入,例如在控制器架构方法和操作方法中一旦对参数进行对象类型约束则会自动触发依赖注入,由于访问控制器的参数都来自于URL请求,普通变量就是通过参数绑定自动获取,对象变量则是通过依赖注入生成。系统服务的概念是指在执行框架的某些组件或者功能的时候需要依赖的一些基础服务,服务类通常可以继承系统的think\Service类,但并不强制(如果继承think\Service的话可以直接调用this->app获取应用实例)。2022/03/12补充。...原创 2020-06-07 10:52:40 · 653 阅读 · 0 评论 -
高并发大流量秒杀方案思路
秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于网站中一些稀缺或者特价的产品,电商网站一般会在约定的时间对其进行限量销售,因为这些产品的特殊性,会吸引大量用户前来抢购,并且会在约定时间同时在秒杀页面进行抢购。1)秒杀时大量用户会在同一时间同时进行抢购,网站瞬时访问量激增。2)秒杀一般是访问请求数量远远大于库存数量,只有少部分用户能够秒杀成功3)秒杀业务流程比较简单,一般就是下订单减库存。限流: 鉴于只有少部分用户能够秒杀成功,所以要限制部分流量,只允许少部分流量进入服务器原创 2022-06-06 10:44:43 · 609 阅读 · 0 评论 -
Memcache高性能缓存与实现跨站登录
快速数据缓存跨服务器登录官网-可以自行选择下载的版本http://memcached.org/downloads启动命令参数说明memcache服务器操作php操作memcache服务器1、下载memcache扩展,并编译安装扩展;注意选择的是memcache第一行的2、编辑php.ini配置文件,开启memcache扩展模块;3、重启nginx、php-fpm4、php操作memcachememcache缓存操作实例...原创 2022-06-04 15:29:22 · 361 阅读 · 0 评论 -
Elasticsearch在PHP下的使用
php操作ElasticSearches-php客户端安装php环境版本要求:PHP >=7.1.0ext-curlext-jsones-php扩展下载地址:https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/installation.html引在thinkphp6框架中引入elasticsearch/elasticsearch包composer require elasticsearch/elas原创 2022-05-12 17:10:01 · 4885 阅读 · 1 评论 -
Elasticsearch环境搭建与基本使用
什么是ElasticsearchElasticSearch 是一个分布式的RESTful开源全文搜索和分析引擎,使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能, 2010 年首次发布。快速,近实时地存储,搜索和分析大量数据。它通常用作底层引擎、技术,为具有复杂搜索功能和要求的应用程序提供支持。Lucene介绍Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎原创 2022-05-08 23:45:17 · 1295 阅读 · 0 评论 -
tp6实战消息队列rabbitmq
需求1、用户登录成功后通过消息队列写入mysql数据库2、用户下单,付款成功和付款失败都会通过延时队列写入mysql数据库,处理掉该订单信息环境准备下载tp6框架并下载指定版本rabbitmq扩展包composer create-project topthink/think=6.0 tp6# 下载指定版本rabbitmq扩展包D:\phpstudy_pro\WWW\thinkphp6>composer require php-amqplib/php-amqplib=^3.0# 安装原创 2022-05-02 17:39:09 · 3386 阅读 · 1 评论 -
rabbitmq死信队列以及延迟
死信队列介绍死信(Dead Letter)是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:1)消息被拒绝2)消息在队列的存活时间超过设置的TTL时间。3)消息队列的消息数量已经超过最大队列长度。那么该消息将成为“死信”。“死信”消息会被RabbitMQ进行特殊处理,如果配置了死信队列信息,那么该消息将会被丢进死信队列中,如果没有配置,则该消息将会被丢弃。RabbitMQ 中有一种交换器叫 DLX,全称为 Dead-Letter-Exchange,可以称之为死原创 2022-05-01 20:07:54 · 1946 阅读 · 0 评论 -
消息队列RabbitMQ入门与PHP实战
消息队列介绍以及消息队列应用场景RabbitMQ说明MQ(Message Queue) 即消息队列,是应用间的通信方式,消息发送后可立即返回,由消息系统来确保消息的可靠传递。”消息队列“是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现生产者和消费者的解耦。为什么使用消息中间件?消息队列是分布式系统中重要的组件,解决应用解耦,异步原创 2022-04-29 21:34:55 · 3163 阅读 · 0 评论 -
PHP设计模式-策略、适配器、观察者
策略模式特点定义一系列算法封装起来, 让他们可以相互替代,策略模式提供了管理相关算法族的办法, 提供了可以体会继承关系的棒法, 避免使用多重条件转移语句实现<?phpabstract class Strategy{ abstract function goSchool();}class Run extends Strategy{ public function goSchool() { echo "走路去学校"; }}class S原创 2022-03-12 14:56:46 · 190 阅读 · 0 评论 -
数据安全 - 双密码本
前言如何保护页面上的不得不展示却又需要进行保护的数据,防止这些有价值的数据被爬虫获取到,比如很多网站都有个人信息,个人信息中的邮件、号码就属于咱们需要保护的信息。用户访问时可以看到这些信息,但是爬虫机器人来了之后,咱们就得保护好数据。加密解密策略大部分爬虫机器在爬取数据的时候,首先会获取到网页的内容,然后再定位相关的标签,最后获取到存储的内容。双密码本加密后的结果永远都是不断变化的,通过定位系统来鉴定索引,通过索引定位唯一字符,最后将这些字符组合在一起,就形成了最终的解密明文示例<?php原创 2021-11-28 17:38:23 · 133 阅读 · 0 评论 -
HTTP 协议知识学习
HTTP 协议中最核心的三个驱动要素用户(不同用户对资源的访问权限)请求(Request):用户向服务器发送了什么样的请求回复(Response):服务器向用户返回了什么样的回复。。。待完善原创 2021-05-30 17:41:14 · 93 阅读 · 1 评论 -
Composer 包管理器使用学习
目前最流行的 PHP 开发框架,采用的都是 Composer 包管理器,不管是Symphony,Laravel,还是国内的 Think PHP 5,Think PHP 5,Slim 等,之所以 Composer 得到众多框架的认可,主要是它更好的解决了包之间的依赖关系,把第三方的开发包管理组织的更为合理。学习 和使用 Composer 已经成为现代 PHP 程序员绕不开的一个环节。掌握 Composer 之后,世界上大量优质的第三方技能包我们都可以拿过来直接用,极大的提升开发速度和开发质量。学习和使用框架的原创 2021-05-19 00:25:42 · 1536 阅读 · 2 评论 -
mysql 分表-横向,纵向
mysql 分库分表分表是分散数据库压力的好方法。分表,最直白的意思,就是将一个表结构分为多个表,然后,可以再同一个库里,也可以放到不同的库。当然,首先要知道什么情况下,才需要分表。个人觉得单表记录条数达到百万到千万级别时就要使用分表了。1,分表的分类纵向分表将本来可以在同一个表的内容,人为划分为多个表。(所谓的本来,是指按照关系型数据库的第三范式要求,是应该在同一个表的。)分表理由:根据数据的活跃度进行分离,(因为不同活跃的数据,处理方式是不同的)案例:对于一个博客系统,文章标题,作者,转载 2021-03-06 11:25:26 · 784 阅读 · 0 评论 -
PHP编译安装fileinfo扩展
前言根据手册的介绍fileinfo扩展从php5.3之后默认是开启的,所以不需要我们单独安装。但是有的集成环境为了编译php的时候提高速度或者节省资源就去掉了这个扩展的安装。所以就需要我们自己动手来安装了。步骤1、我们从fileinfo的源码来安装这个扩展。fileinfo的源码在php源码的“/mnt/php-7.4.14/ext/fileinfo”的目录下面,可以用find来找到具体的路径[root@VM-0-6-centos ~]# find / -name fileinfo/mnt/php原创 2021-02-25 08:47:52 · 1508 阅读 · 0 评论 -
Linux服务器下安装phpmyadmin
安装phpmyadmin1) phpmyadmin官网拉取安装包并解压wget https://files.phpmyadmin.net/phpMyAdmin/5.0.4/phpMyAdmin-5.0.4-all-languages.zipunzip phpMyAdmin-5.0.4-all-languages.zip2) 打开浏览器输入地址http://www.liuyuanshan.top/phpmyadmin/setup/3) 配置账号密码4)完成后点击下载配置文件 config.原创 2021-02-23 22:22:48 · 578 阅读 · 0 评论 -
网络相关内容-Session与Cookie原理、共享问题
前言之前,我们对session的理解只停留在使用session_start()上,然后获取其中保存的值。但如果不知道里面的机制,在开发中遇到了新问题,还是比较麻烦的。session和cookie的存储session一般保存在服务端文件中,php.ini中有个配置session.save_path = “D:\phpstudy_pro\Extensions\tmp\tmp”;这个里面填写的路径,将会使session文件保存在该路径下。session文件的命名格式是:“sess_[PHPSESSIONID原创 2020-12-20 15:32:03 · 193 阅读 · 0 评论 -
网络相关内容-Curl使用
概述在设计之初, cURL (Client URL Library )是一种作为使用 URL 语法传输数据的命令行工具。通过 cURL 库,我们可以在 PHP 脚本中自由地使用某种协议来获取或者提交数据,比如获取 HTTP 请求数据。简单的来说,cURL 是客户端向服务器请求资源的工具。curl的优势在 PHP 中,想要获取某个 URL 的内容其实很简单,有多种实现方法,比如使用file_get_contents() 函数:$content = file_get_contents("http原创 2020-12-20 13:54:37 · 286 阅读 · 1 评论 -
PHP发送curl方法封装使用
PHP发送curl封装方法。原创 2020-01-14 09:45:01 · 323 阅读 · 0 评论 -
网络相关内容-HTTP协议相关知识
1996年5月,HTTP/1.0 版本发布,内容大大增加。首先,任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件。这为互联网的大发展奠定了基础。其次,除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。再次,HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。其他的新增功能还包括状态码( status code )、 多字符集支持 、多部分发送。原创 2020-12-19 20:26:43 · 339 阅读 · 1 评论 -
PHP良好编码方式与技巧注意事项
PHP编码习惯PHP的命名function extName($fileName){$dotPos = strrpos($fileName, '.');$extName = substr($fileName, $dotPos + 1 );return $extName;}命名的注意事项:命名要有实际含义命名风格保持一致不用拼音命名不用语言关键字适当的使用注释终极要求:代码就是注释好的代码应该是自描述的难以理解的地方加上注释函数的功能加上注释说明类的功能和使用方法加注释原创 2020-12-19 17:25:26 · 168 阅读 · 1 评论 -
Nginx配置HTTPS并解析PHP脚本报错问题解决方法
配置443端口访问时发现一次处于文件下载状态,后来发现竟然是443端口下的服务无法解析php文件,后发现location ~ .php$ 下面写然后转给fast-cgi解析 server { listen 443 ssl; server_name www.liuyuanshan.top; ssl_certificate ...原创 2020-01-25 16:12:12 · 1960 阅读 · 2 评论 -
使用PHPStudy创建本地虚拟主机
1.打开phpstudy选择 其他选项菜单-》站点域名管理按顺序从上到下依次填写信息并保存2.配置本地host 127.0.0.1 www.mhb.com3.验证是否生效,这里提供两种验证方法 ping或者 浏览器访问域名方法一:方法二:...原创 2019-12-21 22:32:39 · 307 阅读 · 0 评论