PHP
文章平均质量分 66
qq_540616979
我是一颗小小小草
展开
-
nginx 负载均衡502问题
nginx 负载均衡;nginx的upstream异常原创 2023-03-01 17:27:53 · 8817 阅读 · 0 评论 -
PHP分布式部署代码同步Git实现
php 分布式代码自动同步原创 2023-02-02 17:17:55 · 19994 阅读 · 0 评论 -
PHP项目临时拓容Nginx负载均衡实操记录
PHP项目临时拓容Nginx负载均衡实操记录原创 2023-02-01 16:48:35 · 2118 阅读 · 0 评论 -
PHP Hyperf连接Nacos RPC调用并发内存泄露(协程安全问题)
hyperf rpc 内存泄漏,高并发,协程安全问题原创 2022-08-27 17:36:30 · 20268 阅读 · 0 评论 -
PHP微服务 hyperf+nacos使用
PHP微服务使用 hyper+nacos使用原创 2022-08-26 18:08:44 · 35897 阅读 · 0 评论 -
PHP IO编程epoll实现方案
什么是EPOll,PHP如何实现epoll 模式的IO?原创 2022-01-14 17:26:27 · 13017 阅读 · 0 评论 -
Java为啥比PHP快?
java 真的比php快吗,快又快在哪里,php有优化的方案吗?,php 8.0 jit有实际意义吗?原创 2021-12-28 10:42:19 · 52404 阅读 · 3 评论 -
简述PHP执行流程
PHP 代码是如何最终转换为cpu指令集被执行的?原创 2021-12-27 15:37:05 · 55665 阅读 · 0 评论 -
PHP底层入门的一些概念
PHP运行模式php常见的运行模式有4种:一:cgi 协议模式cgi模式 通用网关接口(Common Gateway Interface),它允许web服务器通过特定的协议与应用程序通信, 调用原理大概为:用户请求->Web服务器接收请求->fork子进程 调用程序/执行程序->程序返回内容/程序调用结束->web服务器接收内容->返回给用户 由于每次用户请求,都得fork创建进程调用一次程序,然后销毁进程,所以性能较低二:fast-cgi 协议模式(就是常用的PHP原创 2021-12-04 17:27:48 · 1923 阅读 · 0 评论 -
PHP+Elisticsearch-7.15+Dejavu综合使用教程
1.配置文件(elasticsearch.yml)#ES集群名称,同一个集群内的所有节点集群名称必须保持一致cluster.name: my_es#ES集群内的节点名称,同一个集群内的节点名称要具备唯一性node.name: master_01#允许节点是否可以成为一个master节点,ES是默认集群中的第一台机器成为master,如果这台机器停止就会重新选举node.master: true#允许该节点存储索引数据(默认开启)node.data: true#数据存储路径原创 2021-04-09 15:18:34 · 5743 阅读 · 0 评论 -
PHP 实现LRU 算法
整体设计1:用数组保存缓存对象(Node);2:缓存对象(Node)之间通过nextKey,preKey组成一个双向链表;3:保存链表头 跟尾;处理流程如下图:主要代码1:Node 节点类/** * 缓存值保存类, * Class Node * @package app\common\model */class Node{ private $preKey=null;//链表前一个节点 private $nextKey=null;//链表后一个节点 priva原创 2021-06-22 17:36:50 · 30113 阅读 · 5 评论 -
2021百度Apollo智能汽车 PHP面试题
1:php 中unset() 的作用;2:php 中的基本数据类型3:php常用的方法;4:Abstract 关键字使用5:php 5.x 跟7.x 区别,底层原有何优化;6:fpm 是什么?7:fpm 的大体架构8:nginx 跟 fpm的通信方式9:nginx Work进程数量配置10:403端口有什么特别11:Http 协议状态码,项目实践中50x 的状态码情况有哪些12:Https 的加密过程,常见的网络攻击有哪些13:tcp/ip 协议实现socket 客户端跟服务端(没明原创 2021-06-18 17:00:43 · 6300 阅读 · 2 评论 -
PHP 常用的设计模式跟使用场景
策略模式:抽象类,接口,实例化不同的具体子类实现对应功能,如BaseControll 子类根据不同模块实现不同的授权;单例模式:全局唯一,数据库连接类,配置文件类等工厂模式:通过不同参数生产不同的实例,封装同类产品,如DbManager 通过参数获取不同类型的数据库连接Builder模式:通过返回操作对象,进行链式调用,TP model->where->find观察者模式:数据变动或事件结束会主动回调,需要提前设置回调方法 如swoole协程结束,设置回调函数,异常处理设置回调函数等原创 2021-05-20 17:57:02 · 1489 阅读 · 0 评论 -
PHP手写HTTP协议
HTTP GET请求的格式:GET /path HTTP/1.1Header1: Value1Header2: Value2Header3: Value3注意:每个Header一行一个,换行符是\r\n。下面是php socket 实现的http 访问,实测是ok的//需要连接的域名 $host="127.0.0.1"; $port="80"; //php创建socket $socket=socket_create(AF_INE原创 2021-05-18 16:00:33 · 17066 阅读 · 0 评论 -
PHP PSR0-4规范
PSR 是 PHP Standard Recommendation 的简写,即PHP推荐标准。目前通过的规范有 PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloading)。PSR 不是PHP官方标准,而是从如Zend、Symfony2等知名PHP项目中提炼出来的一系列标准,目前有越来越多的社区项目转载 2021-05-18 14:09:21 · 2091 阅读 · 0 评论 -
使用composer构建自己的项目
平时写项目我们都是使用别人的框架,也没有去研究文件的加载过程,这里从头分析下composer构建自动加载的过程及相关问题流程:1:安装composer并创建新项目,这里只简单创建了App 文件夹2:配置composer.json 文件,需要使用composer 管理项目必须要有composer.json文件,这里只需要注意autoload 模块的 匹配,简单配置如下{ "name": "composer test", "type": "project", "descript原创 2021-05-06 17:27:25 · 48822 阅读 · 4 评论 -
如何创建自己的composer依赖库
如何创建自己的composer 依赖库环境1:码云账号(或者GitHub)码云地址2:composer 官方仓库账号 Packagist composer官方仓库3:安装composer流程1:发行composer的依赖包是需要从git 或者svn里拉取的,所以得先在码云里创建一个仓库2:依赖包中必须有composer.json配置标明名字依赖等信息,配置大概如下,配置完后提交到码云仓库中;{ "name": "qibo/test", "type": "library",原创 2021-05-06 16:36:48 · 7832 阅读 · 4 评论 -
PHP 递归快速排序问题分析及优化方案
最近研究了下快速排序,发现网上很多用递归实现,但是有很多极端问题,分析记录一波首先给出快排递归实现(网上copy)$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);function quick_sort($a){ // 判断是否需要运行,因下面已拿出一个中间值,这里<=1 if (count($a) <= 1) { return $a; } $middle = $a[0]; // 中间值原创 2021-04-30 16:14:01 · 12257 阅读 · 0 评论 -
关于微服务跟高并发的一些东西
微服务微服务的意义例如我们在开发一个基础的商场系统时,可能分为 用户模块、商品模块、订单模块、活动模块 等,系统建设初期,我们也许为了快速上线和节约成本,那么就会采用直接把一整套的模块代码,全部写在一个项目代码中。 而在后期流量上来后,我们会发现,经常因为某个模块的的功能模块失效,导致整个服务瘫痪。例如 活动模块 和 商品模块 是最容易在高流量下瘫痪的模块。 举个例子,在 2018 年的双十一活动中,某商场系统花了很多钱去做广告,导致很高流量直接进入到商场系统当中,而在此之前,也没做服务拆分,那么 活动原创 2021-04-28 17:03:25 · 3377 阅读 · 3 评论 -
Easyswoole 令牌桶IP限流实现(企业实用)
使用Easyswoole 开发项目有一段时间了,官方的ip 限流方法比较简陋,我这里自己手动实现了一套基于令牌桶算法限流的方案,这里记录分享下实现功能1:根据ip 限速2:可以配置缓冲池,防止突发流量3:可以配置黑白名单,或者及时调整指定ip的流量实现流程一:创建IpAccess 类<?php/** * Created by PhpStorm. * User: 05 * Date: 2020/8/18 * Time: 10:14 * * 模型管理器,保证每个协程只生成一个模原创 2021-04-28 14:38:05 · 26736 阅读 · 2 评论 -
Swoole数据库连接池分析及实现
使用PHP swoole 由于其内存常驻及协程特性,一般是需要使用数据库链接池来减少链接创建的开支的,一个连接池的实现难点在哪,下面分析1:如何判断是否该获取新的链接?A:默认规则一个协程对应一个数据库连接,同一个协程里应该返回同一个链接,即保存链接时应该以协程id为key;2:如何判断连接是否被使用?在获取连接时我们是不能把正在使用的连接给丢给别的协程的,不然就出现数据混淆的风险,在获取数据库连接对象时应该保存该连接被使用的标记,当协程结束时 (Coroutine::defer 注册回调函数)原创 2021-04-26 14:08:26 · 50020 阅读 · 0 评论 -
PHP-Redis实现分布式乐观锁,悲观锁
乐观锁悲观锁使用场景请看这篇乐观锁悲观锁使用场景一: 悲观锁特性:1:互斥性,一个线程获取后其他不能获取,等待或者返回false2:不能死锁,超时应该自动释放3:锁应该只能由加锁人解锁下面是redis 实现的伪代码/** * Class RedisLock * @package app\common\model */class RedisLock { private $redis; private $lock; public function __const原创 2021-04-23 16:57:03 · 20061 阅读 · 0 评论 -
PHP高并发项目性能优化及接口安全实践(企业实践)
记录之前公司微信投票项目性能优化过程及安全相关项目:微信投票,依赖于微信授权框架:yaf,php 7.0规则:每人每天30票(未绑定手机的20票,可以无限送礼,新用户进入直接微信授权后添加用户即可获得20票)已有用户数:50w+原始方案:LNMP php模板渲染高并发页面:投票主页,选手详情页面(含投票活动信息,选手信息,票数,礼物等)压力并发:单机+单库 (8pvc 16g) QPS<150公司要求:QPS 3000+,投票时间一个月,不缺钱优化方案:一:架构修改1:数原创 2021-04-21 15:11:35 · 32928 阅读 · 0 评论 -
PHP多进程异步处理复杂接口类似微服务(企业真实案例)
需求: 用户下单,推荐合师傅给用户(类似滴滴派单)场景: 在线服务平台有各类技术师傅入驻,顾客在下单后需要根据在线师傅及自己位置计算返回相关推荐的师傅给用户问题: 平台师傅有多个评分属性,比如:位置,能力水平,信用分,服务时间等,用户每次下单得查找所有在线师傅 计算综合分后排名返回给用户,整个工作可能非常耗时(师傅数量万级基本超时),php-fpm 无法多线程工作;解决方案:1:根据师傅位置 生成服务范围比如方圆20公里内(这里不能直接用区,很多在边上的用户);2:根据服务范围筛选出对应的工程师;原创 2021-04-02 16:17:45 · 20355 阅读 · 6 评论 -
乐观锁与悲观锁使用场景解读
乐观锁与悲观锁是流程控制的方式,不是锁的实现,在mysql 中写锁理论上都是悲观锁乐观锁:认为事务流程中资源冲突的概率小,不会预先锁定需要的资源,只有在最后提交时校验资源的版本是否一致,一致则修改,不一致则提示失败悲观锁:事务开始则直接锁定所有的资源,这时外部想再获得对应资源则需要等待,并发性比较低,一致性比较强,像mysql 中的myisam 引擎就是悲观锁场景例如: 给用户增加积分会有如下几步1:查找用户信息2:计算用户积分3:修改用户积分使用乐观锁的流程是:全程不用加锁,计算完用户积原创 2021-02-02 15:59:25 · 21883 阅读 · 0 评论 -
集成EasySwoole+LayuiAdmin PHP 框架
最高效简单的PHP 框架主要实现:添加easyswole 必要的类库跟方法,对接前端跟后端接口,实现后台角色跟权限管理运行环境(参照EasySwoole 文档)保证 PHP 版本大于等于 7.1保证 Swoole 拓展版本大于等于 4.4.15需要 pcntl 拓展的任意版本使用 Linux / FreeBSD / MacOS 这三类操作系统使用 Composer 作为依赖管理工具主框架: easyswoole 参考文档 easyswoole文档后台管理: layuimin 采用前原创 2020-12-18 17:21:53 · 6880 阅读 · 0 评论 -
递归与循环的互转关系
递归与循环写法互转1:递归与循环理论上可以互转2:递归顺序必须由父–>子 -->兄弟;3:循环用压栈方式可以实现由父–>子 -->兄弟;用连表方式可以实现父–>兄弟—>子的顺序;递归通用模板 /** * 递归通用函数 */ function dg($pms){ //符合某条件直接返回 if ($pms=='xxx'){ return 'xxx'; }原创 2020-07-28 17:54:47 · 6579 阅读 · 0 评论 -
PHP 实现异步定时多任务消息推送(企业实用级)
PHP 实现 异步多任务模板消息任务推送实现功能点1:异步发送,添加端只管添加,不需要考虑发送2:定时定点,误差不超过5s(任务多会排队)3:保证每条消息发送成功(尝试N次后自动丢弃)4:可设置多线程5:保证不重复发送实现原理crontab(定时执行) +php(实现推送)+mysql(消息存储)步骤1:创建消息表,保存消息(友情提示 注意索引)CREATE TABLE `sent_tpl_task` ( `id` int(11) NOT NULL AUTO_INCREMENT,原创 2020-07-28 16:21:51 · 32343 阅读 · 0 评论 -
composer 与php autoload,命名空间
composer 与php autoload,命名空间composer 是一个依赖管理软件,简单点说就是按照指定规则给你下载对应的依赖包;composer 是第三软件 跟php 没有关系 需要独立安装;composer 需要在对应文件夹配置composer.json 配置文件 没有配置直接执行 composer require phpoffice/phpexcel 命令会 自动帮你生成配置文件 并且对应配置好信息;composer 下载完依赖会直接创建一个vendor 文件夹 里面有 autoloa原创 2020-07-03 14:28:59 · 4785 阅读 · 0 评论 -
Myql事务与锁
事务简单的讲就是保证一组sql 能同时成功 或者失败mysql 只有Innodb 支持事务事务回滚原理通过undo-log 实现,大概意思就是,事务内执行的更新 删除 新增sql 都会记录一条类似逆向的sql 一旦需要回滚则执行逆向sql事务特性:ACID原子性: 事务内的sql执行状态是统一的 要不都成功 要不都失败;通过redo-log 日志实现,只有提交后才持久化到磁盘,未提交的都记录为日志隔离性: 指多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果;通过锁技术实现原创 2020-06-22 16:59:00 · 6674 阅读 · 0 评论 -
Mysql索引基础理解
理解索引前要先理解下面的概念索引是什么索引是一个文件,一个表可以有多个索引文件,正常查找数据时查询优化器判断可以使用索引并且选择索引后会优先读取索引文件,根据索引找到对应数据或者数据ID后再做进一步筛选索引方式1:hash:无序索引,不能范围查找,不能用于排序,使用比较少,缺点较多一般纯内存引擎会用2:B+树:非叶子节点不保存数据,只保存索引key,只有叶子节点保存数据,每次查找都要至叶子节点才能返回数据,一般4层深度可索引千万级别数据(每个数据页16k,行数据1kb,一个索引key16字节的情况原创 2020-06-19 17:19:08 · 6163 阅读 · 0 评论 -
深入理解跨域与跨域攻击CSRF
此文适合了解跨域与CSRF攻击,但又好像似懂非懂的童鞋阅读,对于没有了解过跨域或者跨域攻击的童鞋可以先去了解跨域跟CSRF 再回来看先看问题1:为何浏览器要有同源策略,限制跨域?2:同源策略有什么限制?3:浏览器既然有同源策略,为何还允许JSONP 或者COSF解决跨域?4:浏览器已经限制跨域为何还会有csrf?5:scrf防御核心思想是啥?1:为何浏览器要有同源策略,限制跨域?答1:浏览器没有同源策略 那csrf攻击将会轻而易举,网站cookie随手可取,任何网站将变得不安全eg:用户登原创 2020-06-16 17:36:33 · 30362 阅读 · 0 评论 -
Git 仓库实现全量搬迁
git 仓库搬迁 包括所有分支,记录;1:登录新的服务器2:执行下面代码git clone --mirror <旧的仓库地址>eg : git remote set-url origin ssh://git@xxx.xxx.xxx.xxx/home/mgitproject/xxx/xxxcd <刚clone的文件夹>git remote set-url orig...原创 2019-12-19 11:51:28 · 798 阅读 · 0 评论 -
一些关于ThinkPhp 与 swoole 的事
下面写一些关于ThinkPhp 与 swoole 的事1:TP跟swoole 可不可以结合? 答案是很明显的,网上应该也有很多整好的框架,我没有测试过,这里介绍我是怎么整合的主要用到TP 的自定义命令行,不了解的可以看文档 文档:https://www.kancloud.cn/manual/thinkphp5/235129简单说说环境:首先安装好PHP7 &TP5以及...原创 2018-04-10 14:34:10 · 3670 阅读 · 0 评论 -
Xposed微信支付宝个人免签收款
**微信支付宝个人免签收款**闲话不多说,之前一直奇怪微信抢红包是怎么玩的,直到了解到**Xposed框架,**没错就是它,一个神奇的东西!近期有朋友说要搞个小游戏,了解到微信,支付宝个人收款,于是研究了一番,仅此记录一波!有Xposed框架的支持,理论上是可以实现的,大概流程如下1:游戏端点击收款,发送到服务器2:服务器下发收款信息到手机端3:手机端收到消息通过Xposed调起微...原创 2018-11-25 21:54:01 · 8609 阅读 · 3 评论 -
个人免签ZFB最新转账模式(不能改备注)
前端时间支付宝更新收款码,限制个人收款码的生产数量以及固码的收款次数,顿时免签界一地鸡毛,各种找办法,最后解决办法一般是通过用户id生产转账链接算是勉强解决;如下图:这种方式最大的缺陷就是付款客户可以改动金额跟备注,只要其中一个被修改订单就会失效!还有一个就是 最新版支付宝有可能会不跳转到转账界面!!!经过2天的研究…终于研究出最新转账模式,金额跟备注都不可修改!!跟之前个人收款效...原创 2020-01-02 16:40:46 · 25243 阅读 · 19 评论 -
免签支付包红包通道
支付宝个码限制,固码无法拉起,各种通道都不稳定,最近有出来红包通道,效果跟稳定性比较好,下面先给出体验测试连接红包测试连接这里大概讲讲实现原理1:拉起支付宝,跳转到聊天界面,并弹出红包内容2:hook 支付宝红包,收到红包自动收取3:收取红包后获得对应数据信息,返回数据给服务器1:拉起,原理跟扫描类似,但这里会复杂很多,界面比较多,参数也比较复杂2:监听支付宝,这个就不解析了,xp...原创 2019-02-20 15:25:26 · 3117 阅读 · 1 评论 -
免签微信 HOOK 最新版 7.0.3微信
微信大版本7.0升级,原版微信HOOK 指定使用6.7.2版本微信开始还可以使用,之后只要账号登录过新版本微信后则无法在使用旧版本,提示强制更新,这里花了点时间兼容了最新版本微信(7.0.3)测试连接免签测试...原创 2019-03-10 14:31:57 · 4014 阅读 · 0 评论 -
支付宝免签最新转账,直接H5拉起超低风控!
红包,钉钉,淘宝被封之后支付宝风控可以说相当的严,各种通道都不稳定,收款不到几w就风控最新研究出转账模式,可陌生人转账,可以直接H5拉起,因为不添加备注所以风控很低,单号5w+,有需要的 可以看看测试地址免签测试地址...原创 2019-05-16 11:34:05 · 15835 阅读 · 15 评论 -
支付宝免签收款(无需发送消息) H5直接拉起
前面写了关于支付宝收款摸 需要发送消息的大概流程,这个模式的流程是很清晰的,也是比较严格的应该说丢单的概率很低,因为通过订单号匹配,但是最大的问题就是体验不太好,需要用户手动发送消息,在点击收款进行支付,这样会大大影响成功率,后面思考进行了优化,达到直接拉起跳转支付界面测试选择收款下面写下大概流程:1:前端 发起添加好友2:app端监控添加好友,并获取订单金额跟备注3:发送收款4:回调...原创 2019-04-26 11:09:04 · 7123 阅读 · 3 评论