![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
文章平均质量分 67
倾听岁月
淡淡忧伤,淡淡愉悦。聆听岁月流逝,倾听拾光荏苒。
展开
-
php 任务调度
php 后台进程原创 2023-02-24 16:03:31 · 526 阅读 · 0 评论 -
设计模式 - 适配器模式理解及示例
根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种,在对象适配器模式中,适配器与适配者之间是关联关系;在类适配器模式中,适配器与适配者之间是继承(或实现)关系。将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。设计一个抽象类:工作。目前提供有搬砖、服务员两个工作。原创 2022-10-13 13:33:20 · 370 阅读 · 0 评论 -
hyperf 优点、缺点 分析
hyperf原创 2022-10-11 17:50:09 · 9429 阅读 · 0 评论 -
composer 包开发
composer、package原创 2022-08-25 10:14:28 · 1031 阅读 · 0 评论 -
设计模式 - MVC 扩展设计
设计模式、MVC、原创 2022-08-15 11:32:47 · 249 阅读 · 0 评论 -
设计模式 - 组合模式理解及示例
设计模式 - 组合模式原创 2022-08-10 09:13:43 · 278 阅读 · 0 评论 -
程序运行耗时监听封装类及Skywalking
php 程序执行耗时监控原创 2022-08-02 15:09:07 · 633 阅读 · 0 评论 -
nginx swoole php-fpm工作原理及比较。
Cpu 进程、线程切换。 swoole php-fpm 的比较原创 2022-07-21 11:41:42 · 1217 阅读 · 0 评论 -
分布式架构 - ID 生成器 hash 算法
redis、php、mysql、分布式、hash算法、队列原创 2022-07-18 17:56:32 · 1340 阅读 · 0 评论 -
swoole TCP 集群 MQTT消息通信服务器
swoole 分布式通信转载 2022-06-29 11:14:49 · 766 阅读 · 0 评论 -
mysql XA 分布式事务、DTM TCC事务(多语言支持)
mysql xa 事务支持分布式事务原创 2022-06-27 17:19:39 · 852 阅读 · 1 评论 -
高迸发解决方案2
大迸发解决方案原创 2022-06-11 17:01:05 · 379 阅读 · 0 评论 -
laravel 死锁处理机制+测试
在日常交易场景中,我们有用户A向用户B进行转账,用户B向用户A进行转账的情况,那么当两个请求并发一起执行的时候怎么办呢,首先是在事务中绑定一个死锁。$user1 = \App\Models\User::query()->where('id',1)->lockForUpdate()->first();那么当产生死锁之后我们怎么来处理呢。/** * Notes:死锁1 * Author:tanyong * DateTime:2022/5/19 *原创 2022-05-19 12:03:53 · 614 阅读 · 0 评论 -
好用的linux后台进程管理 pm2
pm2 是一款带有负载均衡的 node 应用进程管理器,当然也可以用来管理 php 的cli脚本。.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的,下面我们来看pm2常用的命令用法介绍吧。PM2 (github上的源码)是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。由下图可见,pm2对应转载 2022-05-18 17:53:45 · 568 阅读 · 0 评论 -
laravel 复杂搜索组件
有时候我们希望能和前端好好对接一个页面的功能性展示,如支持的搜索条件有哪些,支持的字段有哪些,复杂搜索组件代码 ComplexSearch.php<?php/** * Notes:描述该文件的用途 * History:文件历史 * tanyong 2022/5/18 */namespace App\components\ComplexSearch;use App\components\ComplexSearch\Exceptions\ComplexException;use原创 2022-05-18 16:33:31 · 2399 阅读 · 0 评论 -
laravel rbac权限管理系统
开发系统中,关于权限这块儿我想大家都不陌生,就是对一个操作进行权限判定,对用户当前请求的操作效验权限是否允许此用户执行这个动作。最近在学习laravel框架,发现laravel官方没有提供关于我感觉便捷的权限管理。我就自己实现了一个基于rbac模式的权限管理系统1、什么是rbac?在这里就简单说下他的思想,rbac的核心定义就是角色与权限的关系、用户与角色的关系。啥意思呢?意思是说,一组用户通过被分配的角色身份去行使对应的权限。2、如何在laravel中实现rbac以下就是硬货,我尽量对每个类添加原创 2022-05-16 14:22:44 · 4415 阅读 · 0 评论 -
laravel 接口日志中间件
在日常开发中,我们总会使用到restful接口调用,而我们在开发的过程中,我们总是希望统计出我们的接口在使用时入参的情况和回参(响应的情况),为此,我设计了一个中间件来统计接口的调用情况。第一步:创建中间件RunLogMiddleware(运行日志中间件)命令行运行php artisan make:middleware RunLogMiddleware运行成功后,会在App\Http\Middleware命名空间下创建RunLogMiddleware class文件<?phpname原创 2022-05-11 11:02:45 · 692 阅读 · 0 评论 -
laravel 服务提供者(provider)
laravel的服务提供者感觉就是单例模式的实现(单例模式,即是在整个会话中这个类有且仅有一个实例)我们在使用的要明确的知道某些概念,比如一个用户服务提供者,将会注册用户服务或是其它服务(如身份信息服务、邮寄地址服务等等)。用户服务提供者:身份信息服务、邮寄地址服务命令:创建一个服务提供者php artisan make:provider TanyongProvider在自己的服务提供者中注册自己的服务<?phpnamespace App\Providers;use Illumi原创 2022-05-10 18:19:44 · 930 阅读 · 0 评论 -
laravel 队列
最近在学习laravel框架,突然发现我似乎从未发布过关于队列消息方面的文章,今天结合laravel框架来说说队列消息方面的内容。队列消息是什么?消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方原创 2022-05-10 14:56:24 · 736 阅读 · 0 评论 -
php function bind object
PHP function bind object转载 2022-04-14 11:36:24 · 105 阅读 · 0 评论 -
Yii2 关于异常的全局处理
Yii2 全局异常捕获及处理原创 2022-03-29 15:33:31 · 1604 阅读 · 0 评论 -
php Iterator、ArrayAccess
IteratorIterator接口的作用是允许对象以自己的方式迭代内部的数据,从而使它可以被循环访问,Iterator接口摘要如下:interface Iterator extends Traversable { //返回当前索引游标指向的元素 abstract public mixed current ( void ) //返回当前索引游标指向的键 abstract public scalar key ( void ) //移动当前索引游标到下一元素 abstract原创 2020-09-16 10:26:59 · 183 阅读 · 0 评论 -
php yar rpc 远程调用
什么是远程调用?远程过程调用,简称 RPC,是一种最为常见的远程服务。RPC 对于通过网络连接系统之间的过程调用进行了抽象。它在许多方面都类似于 IPC 机制,并且通常建立在 IPC 之上。不过,因为现在的情况是进程处在不同系统上,所以应提供基于消息的通信方案,以提供远程服务。目的:一个项目,从开始到版本更新,一直到最后的版本维护。功能在不断增多,对应的代码量也在不断增加,也就意味着项目变得更不可维护,这时候,我们需要用拆分的方式将一个项目打散,以便开发团队更好的对项目进行维护。什么是Yar?远程过原创 2020-06-02 14:36:03 · 425 阅读 · 0 评论 -
php 守护进程怎么维持数据库的长连接
什么是守护进程?守护进程是在后台底层运行的进程,不和前端发生交互,只在某个特定的时段需要去完成的部分工作的进程。问题1:当守护进程运行的时候,因工作任务量大,计算运行耗时长,但mysql有最大连接时间,超过这个时间后mysql数据库就自动断连,怎么维持数据库的链接呢?解决办法:在每一次sql语句执行之前先判定当前数据库连接是否是一个有效的数据库连接。如果是一个有效的连接,则继续执行后续的工作...原创 2020-04-07 16:40:38 · 835 阅读 · 0 评论 -
php 迭代
什么是迭代?类继承PHP的Iterator接口,批量操作。//迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。//相比传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作。迭代有什么作用?处理大数据的时候迭代器很有作用例子:如果程序在执行的时候需要读取一个文件的内容,传统的方法是将文件file_get_content 或是 fgets,但是这种有一个缺陷,读出来...原创 2020-03-25 17:59:24 · 455 阅读 · 0 评论 -
Yii2实现mysql断线重连
在实际生产环境中,我们有时候需要创建控制台任务在后台执行一系列工作任务,但部分任务耗时较长,此时就会产生一个情况,mysql连接超时,那么我们怎么来控制mysql不连接超时呢?思路:每次在执行sql的时候先判定一次当前mysql连接对象是否过期?如果没有过期则继续执行,过期了初始化一个新的mysql连接来继续执行。限制尽量不要使用事务,对需要事务处理的任务,要谨慎处理(一旦在处理事务的时候...转载 2020-03-25 17:04:02 · 1513 阅读 · 0 评论 -
Yii2 - 性能优化篇 - redis
首先我们需要知道redis 是什么?Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。整合redis 进...原创 2019-11-20 14:51:49 · 991 阅读 · 0 评论 -
php 多继承的实现
php单继承的实现我想很多现在都会,那么怎么去实现多继承呢。trait这个东西就能实现多继承怎么用?<?php trait A { public function getName() { reutrn "my name is tanyong"; } } trait C { public function getAge() { return...原创 2019-07-04 17:09:47 · 2002 阅读 · 0 评论 -
微信开发 - 获取用户地理位置定位
在项目的逻辑业务当中,有时候需要获取用户当前所在的地理位置。那么,我们怎么去获取用户的地理位置定位呢? 可以采用百度地图接口获取用户的地理位置定位。要使用该服务,你得先注册成为百度地图开发者。http://lbsyun.baidu.com/ 百度地图开放平台地址 注册成为开发者后,你会获取到百度地图给你的一个密匙key,这个密匙key就是你以后获取用户地理位置的一原创 2017-04-24 14:28:54 · 17093 阅读 · 2 评论 -
PHP CURL 与 java http
php curl 有时候我们的项目需要与第三方平台进行交互。举个例子。 现在有A、B两个平台。 甲方在最初一段时间由A实现了一部分关键业务(如用户信息等)。 然后基于一部分原因,现在有一些业务需要B来实现,且实现程序调用了一些敏感的接口只能在B方服务器上跑,那么只能做两个平台之间的交互了。curl 就是这种问题的解决方案。 curl 是一个php扩展,你可以看作一个可以访问其他网站的精原创 2017-04-25 09:40:29 · 6371 阅读 · 0 评论 -
一个团队
开发一个系统需要的准备工作系统开发流程1、需求分析:有时候客户自己都清楚自己想要的是什么,那么这个时候就需要产品经理根据用户表现出来的想法去完善或是补充他的想法,并与技术经理沟通这些想法的可行性、时间成本、人力成本、经费成本。然后最终与客户确认这些想法。2、架构分析:根据产品经理带回来的客户需求,分析系统的架构模块及开发时间,要实现这些需求需要制作哪些功能内容,并根据实际情况选择或设计系统的...原创 2019-06-19 15:59:32 · 202 阅读 · 0 评论 -
网站安全防御详解
我所熟悉的网络攻击主要源于DDOC 攻击、CC攻击、sql注入 等攻击,如果你觉得我的文档有帮助,请帮助我点个赞。【笑脸】我所讲解的是一个防御方法,至于是否有用还是要看你的实际情况。1、安全网盾传统的请求模式是,访问一个链接,首先经过的步骤是在DNS服务器上解析这个域名获取源IP地址,这个ip地址就是服务器的实际网络地址。那么我们的第一步防护就是隐藏服务器的真实ip地址,并对所有的请求进行一...原创 2019-06-03 14:07:01 · 2446 阅读 · 0 评论 -
Yii - session 数据库存储
在组件中声明session 组件开启数据库库存储[ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=yii',原创 2017-08-25 14:57:12 · 913 阅读 · 0 评论 -
Yii - 小部件
案例目录结构--modules // 模块存放目录 --WidgetTestModule //WidgetTestModule 模块 --WidgetTestModule.php //WidgetTestModule 模块入口类 --controllers //控制器存放目录 -- TestController.php //TestController 控制器原创 2017-08-24 17:35:06 · 444 阅读 · 0 评论 -
php 魔术方法
方法一: __contruct() 作用:在每次类被实例化的时候被调用<?phpclass Index{ //魔术方法 __contruct public function __construct() { echo "123"; }}$index= new Index();//执行结果 页面显示123方法二:__call($function_原创 2017-08-02 12:15:40 · 265 阅读 · 0 评论 -
我理解的MVC开发模式
mvc开发模式原创 2017-04-21 15:51:54 · 1893 阅读 · 0 评论 -
cookie与session会话
cookie即是传统的会话控制,由于要存储的信息是保存在客户端的,所以安全系数较低,而session会话控制是将要存储的信息保存在服务器上的,所以相对于cookie安全系数较高. 不论是在使用cookie方式存储,还是session方式存储在使用存储的函数之前都不能有输出语句,否则会产生一个e级错误 使用cookie的存储的方式 setcookie(原创 2017-04-24 10:18:35 · 393 阅读 · 0 评论 -
php pdo连接数据库
pdo连接数据库的有点是能实现不同数据库之间的转换,而且有事务功能的回滚,更有pdo::prepare();pdo:::execute()函数的预处理查询,所以我个人认为pdo的功能还是比较强大的,所有这篇日志只为我自己而写,希望看到这篇日志的兄弟们能对你们有所帮助。 要用php连接数据库首先要要实例化pdo的类,并且要有数据源,服务器账号,服务器密码 数据源是数据库类型,原创 2017-04-24 11:06:50 · 1106 阅读 · 0 评论 -
thinkphp 学习日志
此文章仅对我所学内容的一个复习 也算是我php学习的一个总复习thinkphp的行为 理解用户访问某个方法是一个行为 程序实例化一个类是一个行为甚至是为一个变量赋值也是一个行为那么 thinkphp 我们这里探讨的行为是什么呢用户访问某方法前我们要对用户执行什么操作 用户访问某方法后我们执行什么操作 程序开始时我们进行什么操作 等原创 2017-04-24 11:12:27 · 801 阅读 · 0 评论 -
php - socket 详解(转载)
深入浅出讲解:php的socket通信 对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:什么是TCP/IP、UDP?Socket在哪里呢?Socket是什么呢?你会使用它们吗?什么是TCP/IP、UDP? TCP/IP(Transmission Control Protocol/Internet Protoc转载 2017-05-04 16:59:53 · 256 阅读 · 0 评论