![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
php
八重樱。
这个作者很懒,什么都没留下…
展开
-
PHP程序员职业发展规划和技术需求
2020年PHP程序员,如何能更进一步的提升PHP开发内功?腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)对 PHP 职业的划分,我对 PHP 开发人员划分为以下几个阶段.第一级别: PHP 爱好者 第二级别:PHP 初级程序员 第三级别 : PHP 中级程序员 第四级别 :PHP 高级程序员 第五级别 :PHP 工程师以下是对 PHP 职业等级的具体描述:PHP 爱好者:定义: 只是把 PHP 当做业余爱好,接触或者了解过 PHP原创 2020-12-05 20:20:04 · 1309 阅读 · 0 评论 -
4 个常见的 PHP 代码性能对比
通常我会使用常规的、显而易见的 PHP 函数来编写代码来解决相应的问题。但对于其中一些问题,我遇到了特别提高性能的替代解决方案。在本文中,我想介绍其中的一些替代方案。如果你正在寻找在生产中进一步减少执行时间的可能性,这将非常有用。让我们来看看哪些 PHP 方法可能会被性能更好的方法取代,以及是否有任何成本或权衡。所有这些方法都在本地 Web 服务器上使用 PHP 7.4 进行了测试欢迎加入我的官方群1. 删除重复项你有一个包含重复项的大型数组,并且希望删除它们,以便只有一个具有唯一值的数组原创 2020-10-23 20:14:03 · 707 阅读 · 0 评论 -
PHP设计模式之组合模式(Composite) 代码实例大全(12)
目的一组对象与该对象的单个实例的处理方式一致。示例form类的实例包含多个子元素,而它也像单个子元素那样响应 render() 请求,当调用 render() 方法时,它会历遍所有的子元素,调用 render() 方法Zend_Config: 一个配置选项树,每个选项自身就是一个Zend_Config对象UML图★官方PHP高级学习交流社群「点击」管理整理了一些资料,BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器..原创 2020-09-14 22:03:50 · 298 阅读 · 0 评论 -
PHP设计模式之适配器模式(Adapter) 代码实例大全(10)
目的将某个类的接口转换成另一个接口以兼容,适配器使得原来因为接口不同而无法一起使用的类可以一起工作。适配器通过将原始接口进行转换,给用户提供一个兼容接口。例子客户端数据库适配器使用多个不同的网络服务和适配器来规范数据使得出结果是相同的UML 图★BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Dock原创 2020-09-14 20:39:30 · 250 阅读 · 0 评论 -
PHP设计模式之工厂方法模式(Factory Method) 代码实例大全(三)
目的对比简单工厂模式的优点是,您可以将其子类用不同的方法来创建一个对象。举一个简单的例子,这个抽象类可能只是一个接口。这种模式是「真正」的设计模式, 因为他实现了 S.O.L.I.D 原则中「D」的 「依赖倒置」。这意味着工厂方法模式取决于抽象类,而不是具体的类。 这是与简单工厂模式和静态工厂模式相比的优势。UML 图★官方PHP高级学习交流社群「点击」管理整理了一些资料,BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器性能原创 2020-08-29 21:30:58 · 134 阅读 · 0 评论 -
PHP设计模式|观察者模式(Observer)解析与应用
使用场景假设项目经理让我们写了一个登陆接口,咔咔擦擦写完了第二天让我们加入统计登陆次数,然后在后面加代码第三天让我们判断登陆地区,又在后面加代码第四天让我们在用户登陆后推送活动,再再后面加代码第N天,这个接口已经杂乱到没人想维护了我们需要让项目保持高内聚低耦合,就可以用到观察者模式(也不是非要,看需求)概念观察者,观察者,首先要有个被人观察的角色,这是唯一的,然后会有无数个观察者去看她,可以说是一群人在围观一个人,既然有无数个观众,那总得有个东西记录有哪些观察者,那就应该有一个类原创 2020-08-18 22:18:19 · 486 阅读 · 0 评论 -
PHP的垃圾回收机制-PHP高级面试题+详解
面试10家公司,收获9个offer,2020年PHP 面试问题zhuanlan.zhihu.comps:本篇内容包括精选面试题与知识篇。PHP面试题关于PHP的垃圾回收机制,PHP的垃圾回收机制引用计数 (reference counting) GC 机制,PHP可以自动进行内存管理,清除不需要的对象,PHP面试题分享PHP关于垃圾回收机制的面试题:★我的php学习交流社群——856460874。群内管理已准备好 整理好的BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)欢迎获取一起原创 2020-08-06 22:40:01 · 960 阅读 · 0 评论 -
Redis持久化过程的监控及优化
Redis持久化过程一直是影响redis性能的常见因素,如何监控持久化以及如何优化持久化过程呢?下面我们就一起来看看吧。fork的监控及优化不管是使用哪种持久化,RDB持久化或AOF重写,主进程都会fork出一个子进程,在子进程里完成rdb文件的生成或aof的重写。fork操作对于操作系统来说属于比较重的操作。fork阶段,redis会阻塞一段时间。阻塞时间和redis数据占用的内存大小成正比关系,每1G内存fork耗时在20毫秒。如想知道fork阶段的阻塞时间,可以使用info stat.原创 2020-05-23 20:44:18 · 298 阅读 · 0 评论 -
PHP7.4 全新扩展方式 FFI 详解
随着PHP7.4而来的有一个我认为非常有用的一个扩展:PHP FFI(Foreign Function interface),引用一段PHP FFI RFC中的一段描述官方群点击此处。For PHP, FFI opens a way to write PHP extensions and bindings to C libraries in pure PHP.是的,FFI提供了高级语言...原创 2020-04-28 20:23:38 · 875 阅读 · 0 评论 -
PHP 语法字符串函数 strcmp、strlen 使用及实现
说明这里基于 php7.2.5 进行测试,php7 之后内部结构变化应该不是太大,但与 php5.X 有差别。函数分类用户自定义函数say();function say(){ echo "周杰伦";}php hello.php周杰伦cli 模式下我们执行这个代码之后就会输出函数调用的结果,简单来说这个过程经历了下面的步骤...原创 2020-04-25 20:32:02 · 184 阅读 · 0 评论 -
阿里云-workerman 服务器环境配置
1、购买阿里云 centos 服务器2、下载 Linux一键安装web环境 ,并copy到服务器3、执行一键安装包(./install.sh),会自动清理之前一键安装包安装过的环境。4、根据需要选择相应软件版本5、查看密码:标准版:cat /alidata/account.log专业版:cat /root/sh-1.5.4/account.log注意:有可能不在这里,而...原创 2020-04-17 15:19:07 · 301 阅读 · 0 评论 -
Redis哨兵模式实现主从故障互切换的方法
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。我的官方群点击此处。虽然 Redis Sentine...原创 2020-04-14 13:33:16 · 433 阅读 · 0 评论 -
教你使用swoole监听redis数据
swoole如何监听redis数据?Laravel使用swoole监听redis开始之前,请先确保redis已经正确安装,并正常运行。Laravel代码在App\Events目录下新建RedisTest事件我的官方群点击此处。<?phpnamespace App\Events;use Illuminate\Broadcasting\Channel;use...原创 2020-04-10 14:54:03 · 390 阅读 · 0 评论 -
用PHP+Redis实现延迟任务 实现自动取消订单(详细教程)
简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本以上;我的官方群点击此处。(A)业务场景:1、当一个业务触发以后需要启动一个定时任务,在指定时间内再去执行一个任务(如自动取消订单,自动完成订单等功能)2、redis的keyspace...原创 2020-04-09 15:39:35 · 827 阅读 · 1 评论 -
tp5 workerman安装不上解决方法
tp5 workerman安装不上怎么办?今天在tp5下安装Workerman时出现了以下问题$composer require topthink/think-workerUsing version ^2.0 for topthink/think-worker./composer.json has been updatedLoading composer repositori...原创 2020-04-09 14:58:47 · 1263 阅读 · 0 评论 -
一种颗粒度很小的 Laravel 路由文件划分方式
我估计我们所有人都遇到过这样的情况,即我们有一个写满路由的超大文件。不骗你,这让我很长一段时间几近抓狂,我不得不想个办法解决这个问题。 因此,这就是我最终用来构造路由文件的方法。最初,我想到了利用路由组方法可以接收文件,这就是 laravel 在 RouteServiceProvider 处拆分路由的方式。<?phpnamespace App\Providers;use Ill...原创 2020-04-09 13:30:10 · 128 阅读 · 0 评论 -
Composer 实现自动加载原理-新手也能看懂
简介一般在框架中都会用到composer 工具, 用它来管理依赖。其中 composer 有类的自动加载机制,可以加载 composer 下载的库中的所有的类文件。那么 composer 的自动加载机制是怎么实现的呢?composer 自动加载原理以在 Laravel 框架中为例:1. 首先在入口文件(/public/index.php)中引入了 autoload.php...原创 2020-04-08 14:48:18 · 283 阅读 · 0 评论 -
带你了解下Laravel集合
前言集合通过 Illuminate\Support\Collection 进行实例,Laravel的内核大部分的参数传递都用到了集合,但这并不代表集合就是好的。Laravel作为快捷并优雅的开发框架,是有他一定的道理所在的,并非因他的路由、DB、监听器等等。当你需要处理一组数组时,你可能就需要它帮助你快捷的解决实际问题。创建集合$collection = collect([1,...原创 2020-04-08 13:14:24 · 178 阅读 · 0 评论 -
如何减少 Hyperf 框架的扫描时间
原因Hyperf框架为了防止用户更新组件后,代理缓存没有更新导致启动报错。增加了以下钩子。{ "scripts": { "post-autoload-dump": [ "init-proxy.sh" ] }}而init-proxy.sh脚本,会执行php bin/hyperf.php di:in...原创 2020-04-07 15:08:09 · 783 阅读 · 0 评论 -
关于Laravel 7 的简单隐式路由模型绑定
Laravel 的下一个主要发行版本 ,你可以直接在路由定义中自定义隐式路由模型绑定:Route::get('/posts/{post:slug}', function (Post $post) { // ...});目前,使用 Laravel 6,下文中的需求需要你像这样在模型上定义一个 getRouteKeyName() 方法:<?phpclass Po...原创 2020-04-07 14:15:06 · 259 阅读 · 0 评论 -
在thinkphp中实现facade的方法
主要的思想是利用call_user_func_array()和容器结合使用的。核心代码,理解都在注释中:<?php//reqeuestFacade.php namespace facade{ class Request extends Facade{ public function getFacadeName(){ ...原创 2020-03-31 15:02:22 · 752 阅读 · 0 评论 -
laravel中间件的创建思路分析
网上有很多解析laravel中间件的实现原理,但是不知道有没有读者在读的时候不明白,作者是怎么想到要用array_reduce函数的?本文从自己的角度出发,模拟了如果我是作者,我是怎么实现这个中间件功能,又是怎么找到并使用对应的函数。我的官方群点击此处。什么是laravel中间件Laravel 中间件提供了一种机制在不修改逻辑代码的情况下,中断原本程序流程,通过中间件来处理一些事件...原创 2020-03-30 19:49:32 · 118 阅读 · 0 评论 -
PHP 代码简洁之道 ( PHP Clean Code)(第二部分)
PHP 代码简洁之道 ( PHP Clean Code)(第一部分)使用默认参数而不是使用短路运算或者是条件判断不好的做法:这是不太好的因为$breweryName可以是NULL.function createMicrobrewery($breweryName = 'Hipster Brew Co.'): void{ // ...}还算可以的做法:这个做...原创 2020-03-27 16:59:42 · 205 阅读 · 0 评论 -
PHP 代码简洁之道 ( PHP Clean Code)(第一部分)
介绍Robert C.Martin's 的 软件工程师准则Clean Code同样适用于 PHP。它并不是一个编码风格指南,它指导我们用 PHP 写出具有可读性,可复用性且可分解的代码。并非所有的准则都必须严格遵守,甚至一些已经成为普遍的约定。这仅仅作为指导方针,其中许多都是Clean Code作者们多年来的经验。尽管许多开发者依旧使用 PHP 5 版本,但是这篇文章中绝大多数...原创 2020-03-27 14:54:21 · 631 阅读 · 0 评论 -
Laravel 教程:使用Fast Excel解决导出超大 XLSX 文件(千万级)带来的内存问题
TL;DR: 本文介绍 Laravel 的 FastExcel 组件,文中会对 PHP generators 速览,并给出如何在节约内存的同时结合两者从数据集生成 Excel 文件。关于 FastExcelLaravel FastExcel旨在成为 Laravel 风格的Spout, 目的是简化导入 / 导出。它可以看作是Laravel Excel的一种更快(且对内存更友好)的替...原创 2020-03-26 15:11:40 · 1832 阅读 · 0 评论 -
ThinkPHP无限分类的使用
本文实例展示了ThinkPHP自动填充实现无限级分类的方法,是ThinkPHP常用功能之一,非常具有实用价值。现将完整实例分享给大家,供大家参考。ThinkPHP无限分类的使用具体实现步骤如下(本文采用TP框架的3.1.3版本):第一步:表aoli_cateCREATE TABLE `fenlei` ( `id` int(10) unsigned NOT NULL AUTO...原创 2020-03-26 14:22:45 · 189 阅读 · 0 评论 -
PHP 的 interface 有什么用处?
确实,PHP 接口是有它的目的的。它们是契约,是给其他开发人员的说明手册。然而,还是很难理解接口有什么用。基础接口是抽象的类,无法直接实例化,但是可被实现。这是一个基本的例子interface MyInterface { public function setName(string $name); public function getName();}c...原创 2020-03-24 20:04:09 · 214 阅读 · 0 评论 -
你理解 PHP 中的静态方法吗?
它仍然是一个有争议的话题。让我们尝试了解原因。函数中的静态变量您可能已经看过以下代码:function testStatic() { static $x = 0; $x++; return $x;}在这里,我们每次调用testStatic()时,关键字static允许递增$x:testStatic();testStatic();...原创 2020-03-24 17:23:58 · 172 阅读 · 0 评论 -
编写可读代码:通过提前返回来减少缩进
在这篇简短的文章中,我想向您提供有关编写可读 PHP 的技巧。在处理旧代码或通过 PR 提交的代码时,有时会看到以下模式:public function doSomething($someParameter){ /** 可以是任何类型的测试 */ if ($someParameter === 0) { // 实际工作 }}在函数的开头,有一...原创 2020-03-24 17:20:57 · 192 阅读 · 0 评论 -
程序员找工作必备 PHP 基础面试题
1、优化 MYSQL 数据库的方法(1) 选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置 NOT NULL, 例如’省份,性别’, 最好设置为 ENUM(2) 使用连接(JOIN)来代替子查询:(3) 使用联合 (UNION) 来代替手动创建的临时表(4) 事务处理:(5) 锁定表,优化事务处理:(6) 使用外键,优化锁定表(7) 建立索引(8)...原创 2020-03-23 15:42:32 · 214 阅读 · 0 评论 -
关于使用 Laravel 服务容器的优势介绍
如果说laravel框架的核心是什么,那么无疑是服务容器。理解服务容器的概念,对于我们使用laravel太重要了,应该说是否理解服务容器的概念是区分是否入门laravel的重要条件。因为整个框架正是在服务容器这一基础上构建起来的。laravel服务容器就像一个高度自动化的工厂,你需要的东西,定制好模型,使用特定接口来制造。因为使用了服务容器,laravel中大部分对象实例化的方式是这...原创 2020-03-19 16:00:13 · 274 阅读 · 0 评论 -
关于PHP+jQuery-ui拖动浮动层排序并保存到数据库实例
PHP+jQuery-ui实现的拖动浮动层排序布局并将拖动后的浮动层位置排序结果保存到数据库实例。首先引入jQuery库和jquery-ui.min.js,接着放置一个拖动时的加载图片,和从数据库读取出来的多个模块拖动层.modules,及#orderlist用于记录模块的排序值 。<script type="text/javascript" src="jquery.js"&g...原创 2020-03-18 14:48:20 · 206 阅读 · 0 评论 -
php链式操作的实现
php链式操作的关键是在做完操作后要return $this;一、不使用__call方法实现链式操作<?phpclass Sql{ private $sql=array("from"=>"", "where"=>"", "order"=>"", "limit"=>""...原创 2020-03-18 14:19:38 · 132 阅读 · 0 评论 -
基于RabbitMQ和Swoole实现的一个完整的异步任务系统
从最开始的使用redis实现的单进程消费的异步任务系统到加入swoole的多进程消费模式,现在,我们的异步任务系统终于又能迈进一步。因为有了前面两个简单系统的经验,这回基于RabbitMQ的异步任务系统设计的的更加完善,包括多进程消费,异常重试等。系统介绍消费端架构图从图中可以看到,我们这个系统是一个基于事件的异步任务系统。就是说当一个事件产生时,生产者将事件抛给调度器,...原创 2020-03-17 13:55:37 · 1395 阅读 · 0 评论 -
swoole模块的编译安装:php编译安装swoole模块的代码
本篇文章给大家带来的内容是关于swoole模块的编译安装:php编译安装swoole模块的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1.下载swoole1 wget https://github.com/swoole/swoole-src/archive/v1.9.3-stable.tar.gz 2.安装找点phpize 和 php-config路...原创 2020-03-14 17:07:51 · 185 阅读 · 0 评论 -
使用什么调试swoole程序
可以使用GDB调试swoole程序。gdb是GNU debugger的缩写,是编程调试工具。gdb的功能:1. 启动程序,可以按照用户自定义的要求随心所欲的运行程序。2. 可让被调试的程序在用户所指定的调试断点处停住(断点可以是条件表达式)。3. 当程序停住时,可以检查此时程序中所发生的事。比如,可以打印变量的值。4. 动态改变变量程序的执行环境。推荐学习:swoole教...原创 2020-03-14 17:03:33 · 333 阅读 · 0 评论 -
rabbitMQ消息中间件环境配置及原理了解
视频内容,首先视频正在审核,通过了我会贴上来。我的官方群点击此处一、Docker 入门Docker是什么? Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任 何流行的 Linux 机器上。为什么要使用 Docker? 作为一种新兴的虚拟化方式,Docker 跟传统的虚...原创 2020-03-13 21:35:31 · 390 阅读 · 0 评论 -
关于php命令行模式介绍
php全集行模式,即php-cli,官方文档中称为: CLI SAPI(Server Application Programming Interface,服务端应用编程端口).听着挺复杂。其实是因为php原本为服务器端的脚本语言,所以引申出这个叫法。与服务端模式的不同服务端模式主要有两种工作方式: 作为web server的模式方式或作为一个cgi可执行程序. 前者,比如作为apach中的...原创 2020-03-12 21:31:40 · 179 阅读 · 0 评论 -
redis数据淘汰策略介绍
本文讲的是 当redis设定了最大内存之后,缓存中的数据集大小超过了一定比例,实施的淘汰策略,不是删除过期键的策略,虽然两者非常相似。在 redis 中,允许用户设置最大使用内存大小通过配置redis.conf中的maxmemory这个值来开启内存淘汰功能,在内存限定的情况下是很有用的。设置最大内存大小可以保证redis对外提供稳健服务。我的官方群点击此处。redis 内存数据集大...原创 2020-03-12 21:29:49 · 292 阅读 · 0 评论 -
PHP终止脚本执行的方法介绍
终止脚本执行,指的是通过一条语句告诉PHP引擎,此语句之后的其他语句不需要执行。PHP提供了三种方式来终止脚本执行:return,die,exitreturn:执行到该处退出,如果是在函数中,表示退出函数,如果是在脚本中,表示脚本停止执行//return//return '*'; //exit//exit; //直接停止,不需要输出任何提示信息//exit('...原创 2020-03-12 21:23:40 · 311 阅读 · 0 评论