04 2020 档案
摘要:Composer 使用不同的技术和标准简化了类的自动加载。当今最常见的自动加载标准是 PSR-4: "autoload": { "psr-4": { "App\\": "src/" } } 这将使用带有 “App” 名称空间前缀的 PSR-4 标准将 src 文件夹中的所有类自动加载。但是,我们如何
阅读全文
摘要:首先看下ThinkPHP6官方手册关于多应用的目录结构: ├─app 应用目录 │ ├─index 主应用 │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ │ ├─config 配置目录(优先) │ │ └─ ... 更多类库目录
阅读全文
摘要:https://github.com/Qsnh/meedu 随着知识付费领域的兴起,尤其是知识付费领域的龙头“得到”的成功,知识付费领域俨然成为了新的风口。经过这几年的发展,知识付费领域的基础建设有了很大的进步,市场上面很多知识付费的平台可以在短短几分钟之内搭建一套属于自己的知识付费应用。但是,这并
阅读全文
摘要:PHP作为一种解释型语言,不同于编译型语言编译结果即为当前CPU体系的指令,PHP源代码只有编译成opcode才能够被zend虚拟机直接执行。 下面就简单描述PHP7语言执行原理: 1. 源代码首先利用Re2c实现的词法分析器进行词法分析,将源代码切割为多个字符串单元,分割后的字符串称为Token;
阅读全文
摘要:先设置上传文件的路由: Route::post('upload/images'['as'=>'uploadImages','uses'=>'UploadController@uploadImages']); Route::post('upload/multiUpload'['as'=>'multiU
阅读全文
摘要:Laravel Valet 是为Mac OS X提供的极简开发环境,但是,Valet的配置和传统的HTTP服务器(Apache、Nginx等)有些区别,不同于在配置文件中重写URL,Valet通过在PHP类中使用一种模块化方式定义URL处理。由于Flarum和Laravel默认目录结构不同,所以我们
阅读全文
摘要:随着PHP7.4而来的有一个我认为非常有用的一个扩展:PHP FFI(Foreign Function interface),引用一段PHP FFI RFC中的一段描述 For PHP, FFI opens a way to write PHP extensions and bindings to
阅读全文
摘要:如果你想为你的 Laravel 项目写一些测试,那么你可能需要在某个时候编写一些工厂模式。 当我第一次听到工厂一词时,我不知道它的含义和作用,更不用说了解它们可以为你的测试带来的好处了。 假设你有一个产品 Controller,该控制器具有一种存储方法来保存新产品的详细信息。 产品可能具有产品代码,
阅读全文
摘要:我一般会选用源码安装 php,安装 php 的过程指定要安装的扩展,但是避免不了缺少某个扩展未安装导致程序运行报错的问题。以 fileinfo 为例,介绍一下怎么添加 php 扩展。 1. 准备 通常遇到报错:xxx function undefined,而这个函数是系统函数的话,那一定是你缺少某个
阅读全文
摘要:本篇文章给大家介绍一下PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo),结合实例形式分析了PHP基于mysql、mysqli、pdo三种方式连接MySQL数据库的相关操作技巧与注意事项。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 PHP与MySQL的连接
阅读全文
摘要:下面是我整理的在平常会经常用到的一些不错的辅助方法。文中方法大都基于 Laravel7 以及更早的版本。(如果遇到问题,请先检查是否是版本兼容问题) Str::limit() 我们的第一个辅助函数 获取一个字符串并用一个设定的字符长度限制截断它 。它有两个必须参数:你想截断的字符串,以及返回的被截断
阅读全文
摘要:说明 这里基于 php7.2.5 进行测试,php7 之后内部结构变化应该不是太大,但与 php5.X 有差别。 函数分类 用户自定义函数 say(); function say() { echo "周杰伦"; } php hello.php 周杰伦 cli 模式下我们执行这个代码之后就会输出函数调
阅读全文
摘要:在 PHP 中,有三种类型的数组: 数值数组 - 带有数字 ID 键的数组 关联数组 - 带有指定的键的数组,每个键关联一个值 多维数组 - 包含一个或多个数组的数组 看具体实例: 创建数组 <?php //方式 1 $cars = array("Volvo","BMW","Toyota"); //
阅读全文
摘要:Laravel Valet,Mac平台上的极简Laravel开发环境,早已发布了2.0版本,该版本主要包含了一些bug修复以及将内置服务器从Caddy替换成Nginx。 升级到 Valet 2.0 升级到新版本很简单,只需几步就可以完成。 首先,备份你的~/.valet目录,然后停止正在运行的Val
阅读全文
摘要:第三方存储媒介 前面我们介绍了基于 Swoole 的 Process 及 Process\Pool 模块在 PHP 中实现多进程管理,但是多进程模式下进程间是相互隔离的,无法共享数据和变量,即便是通过 global 定义的全局或超全局变量,也只是在所属进程中有效,如果要在 Swoole 实现的多进程
阅读全文
摘要:目前我安装的 Homestead 虚拟机版本是 2.1.8: 该版本 Homestead 上预装的 PHP 版本是 5.6.15: 我们使用 ab 命令(Apache 提供的性能测试工具)在该版本中测试 Laravel 应用(以目前正在讲的使用Laravel开发的博客应用为例)性能,我们模拟 100
阅读全文
摘要:关于thinkphp中的__construct()和_initialize()的理解 网上有很多的说法和用法,自己测试了一下,下面是根据测试结果并结合自己的理解得出的结论,如有不对的地方,欢迎大家纠正!!! 我们先看一下Thinkphp自带的Controlle类的内容(ThinkPHP\Librar
阅读全文
摘要:实际生产场景中,有可能会因为迁移机房或者更换物理机等原因需要在生产环境迁移redis数据。本文就来为大家介绍一下迁移redis数据的方法。 迁移redis数据一般有如下3种方式: 1、第三方工具redis-dump,redis-load 2、aof机制,需要开启aof功能 3、rdb存储机制 这里介
阅读全文
摘要:Laravel 团队昨天发布了 v7.7.0,其中包含容器支持的构造函数支持可变参数,一些新的 HTTP 客户端功能,Blueprint 新增 rawIndex() 方法以及 7.x 分支中的所有最新功能,修复和更改 : HTTP 客户端 GET 请求 支持数组 Daniel Mason 贡献了 H
阅读全文
摘要:什么是 Opcache 每一次执行 PHP 脚本的时候,该脚本都需要被编译成字节码,而 OPcache 可以对该字节码进行缓存,这样,下次请求同一个脚本的时候,该脚本就不需要重新编译,这极大节省了脚本的执行时间,从而让应用运行速度更快,同时也节省了服务器的开销。 用数字说话 我们当然很想知道到底进行
阅读全文
摘要:我们来开门见山地说。 PHP 是一门奇葩的语言。它既不快,语法又不漂亮。还没有遵守良好的软件开发实践。 但我还是使用它开发了很多软件。 那么问题就很明显了 为什么今天还在使用 PHP ? 除了个人理想主义的偏好以外,还有很多理由。这才是我们要讨论的范围。为什么选 PHP 作为我的 Web 开发语言?
阅读全文
摘要:1.缩短键值对的存储长度 键值对的长度是和性能成反比的,比如我们来做一组写入数据的性能测试,执行结果如下: 从以上数据可以看出,在 key 不变的情况下,value 值越大操作效率越慢,因为 Redis 对于同一种数据类型会使用不同的内部编码进行存储,比如字符串的内部编码就有三种:int(整数编码)
阅读全文
摘要:Laravel 团队昨天发布了 v7.6.0,其中包含 13 个新功能以及 7.x 分支的最新修复和更改: 集合新增 “until” 方法 Jason McCreary 贡献了 Collection::until() 方法, 该方法可以循环遍历集合直到元素满足条件再将该元素返回: // Before
阅读全文
摘要:Laravel 8 将于今年晚些时候发布一个新的 schema:dump 命令。 此命令对现有项目非常有用,因为它删除了不再需要的旧迁移并加快了测试和 CI process。 Taylor Otwell 在他的 pull request 中解释了此功能: 此 PR 增加了 php artisan s
阅读全文
摘要:本篇文章给大家介绍一下php的4种常用运行方式:CGI、FastCGI、APACHE2HANDLER和CLI。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 PHP的4种常用运行方式:CGI、FastCGI、APACHE2HANDLER、CLI。 1、CGI CGI即通用网关接口(
阅读全文
摘要:Github 仓库 demo-redis-subscribe 创建项目 $ composer create hyperf/biz-skeleton demo-redis-subscribe dev-master Installing hyperf/biz-skeleton (dev-master 1
阅读全文
摘要:场景 一个金融公司有 500w 投资用户,每天充值投资 50w 笔,那么该公司每年将近有 1 亿条充值记录,那么我们改如何处理这个充值订单表的数据呢?难不成都放一张表里面,那万一哪天我让你去统计满足某个需求的记录,1 亿条数据里面检索你会累死 mysql 的!今天我们就来讲述一下如何去处理这种情况。
阅读全文
摘要:说明 这里基于 php7.2.5 进行测试,php7 之后内部结构变化应该不是太大,但与 php5.X 有差别。我们今天学习 PHP 中的数组语法,数组在 PHP 中堪称万能结构,什么都能存什么都能放,非常灵活,因为 PHP 没有其他语言的如 map、list 等结构,PHParray 就够了。 们
阅读全文
摘要:首先要明白为什么要用 mysql 的主从复制: 1–在从服务器可以执行查询工作 (即我们常说的读功能),降低主服务器压力;(主库写,从库读,降压) 2–在从主服务器进行备份,避免备份期间影响主服务器服务;(确保数据安全) 3–当主服务器出现问题时,可以切换到从服务器。(提升性能) 来说一下主从复制的
阅读全文
摘要:前言 码字不易,希望大家多提宝贵意见。我们要给别人讲解一个问题的时候,最直观的方法莫过于用图形的方式去讲解,而不是枯燥的文字。毕竟我们还是个孩子的时候,图画更能给我们带来触动,而文字我们因为一些认知的问题会导致一些理解能力上的偏差。设计模式里面的 UML 类图就是可以让你给别人讲解设计理念的时候,不
阅读全文
摘要:如何直接将输出显示给浏览器? 将输出直接显示给浏览器,我们必须使用特殊标记 <?=and?>。 PHP 是否支持多重继承? PHP 只支持单继承。PHP 的类使用关键字 extends 继承另一个类 获取图片属性(size, width, 和 height)的函数是什么? 获取图片大小 size:g
阅读全文
摘要:简介 sl-im 是基于 Swoft 微服务协程框架和 Layim 网页聊天系统 所开发出来的聊天室。 体验地址 sl-im https://im.gaobinzhan.com 演示图 功能 登录注册(Http) 单点登录(Websocket) 私聊(Websocket) 群聊(Websocket)
阅读全文
摘要:1、购买阿里云 centos 服务器 2、下载 Linux一键安装web环境 ,并copy到服务器 3、执行一键安装包(./install.sh),会自动清理之前一键安装包安装过的环境。 4、根据需要选择相应软件版本 5、查看密码: 标准版:cat /alidata/account.log 专业版:
阅读全文
摘要:说明 这里基于 php7.2.5 进行测试,php7 之后内部结构变化应该不是太大,但与 php5.X 有差别。 什么是引用 在 PHP 中引用是一种数据类型 (结构),是指 指向同一个类型的数据结构,来看具体存储结构 struct _zend_reference { // 引用计数用于垃圾回收 先
阅读全文
摘要:Laravel 团队昨天发布了 v7.5.0,其中包含了框架的一些更新的最新功能、修复和优化: 新的 Http 客户端断言 Christoph Rumpel 为 Http 客户端提供了两个新的测试方法: Http::assertNotSent(function ($request) { return
阅读全文
摘要:我最近在 StackOverflow 上发现了很多询问什么是 Laravel Resource 控制器的问题。 本文解释了这个基本概念,继续往下看。 Laravel 资源型控制器 资源控制器就是 Laravel 控制器的一种,具有创建、读取、更新和删除资源(或模型)的所有方法。 您可以使用此 art
阅读全文
摘要:思路 利用 WebSocket 协议让客户端和服务器端保持有状态的长链接,保存链接上来的客户端 id。订阅发布者发布的消息针对已保存的客户端 id 进行广播消息。 WebSocket 服务 composer require hyperf/websocket-server 配置文件 [config/a
阅读全文
摘要:Contracts Contracts其实就是倡导面向接口编程,来达到解耦的目的。而这些通用的接口已经由Laravel为你设计好了。就是这些Contracts. 那么Laravel如何知道我们需要使用哪个实现呢? 在Laravel默认的Contracts绑定中,在'Illuminate/Founda
阅读全文
摘要:1.PHP 如何实现不用自带的 cookie 函数为客户端下发 cookie。对于分布式系统,如何来保存 session 值。 这个题有点绕。考的还是 COOKIE 和 SESSION 的基础知识。服务端通过 set-cookie 命令来通知客户端保存 cookie。 只要按照 domain pat
阅读全文
摘要:1、PHP 语言的一大优势是跨平台,什么是跨平台? PHP 的运行环境最优搭配为 Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如 windows、Linux 等)上配置,不受操作系统的限制,所以叫跨平台 2、WEB 开发中数据提交方式有几种?有什么区别?百度使用哪种方式? Ge
阅读全文
摘要:laravel 的分页是非常简单易用的,但是有一点不是非常理想, 默认的分页生成的链接是 users?page=1 这种形式对seo不是非常友好(理论上) 那么我们可能就需要像 users/page/1 这种形式的分页链接 那么怎么做到呢? 我现在有两种方式实现的方式 第一种是我之前项目中采用的,直
阅读全文
摘要:作为 PHP 开发人员,我们不需要担心内存管理。 PHP 引擎在我们背后进行了出色的清理工作,短暂执行上下文的 web server 模型意味着即使是最草率的代码也没有持久的影响。 在极少数情况下,我们可能需要走出舒适的界限 — 例如,当我们尝试在可以创建的最小 VPS 上为大型项目运行 Compo
阅读全文
摘要:Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移,
阅读全文
摘要:Swoole 是一款优秀的 PHP 扩展,利用其可以实现原生 PHP 很难做到的常驻服务和异步。正好我有个 Laravel 项目可以折腾,就研究了下。 Laravel 项目是基于 composer 的,所以我先帖下我的 composer.json 中的 require 声明: { "require"
阅读全文
摘要:在开发中,如果一个新增或修改的表单,在后台完成数据库操作后我们设定的不是跳转到其他页面,还是返回本页面,这时点击浏览器的后退再提交或刷新页面,会导致form表单重复提交,即这条记录会被增加或修改两次。 导致表单重复提交的原因是:第一次提交的表单会被缓存到内存中,直到页面下次提交或页面关闭或转向其他页
阅读全文
摘要:当应用程序已经注册或订阅用户时,发送邮件可能是必不可少的功能之一。 在开发过程中,我们倾向于使用 SMTP 测试服务器,例如 mailtrap.io。 Mailtrap 为单个收件箱提供了一个免费计划以进行测试,我们可以将邮件发送到该收件箱,但收件箱中存储的邮件数量有限。当我们使用此免费计划时,我们
阅读全文
摘要:分布式锁,是控制分布式系统之间同步访问共享资源的一种方式。 在分布式系统中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,在这种情况下,便需要使用到分布式锁。 setnx 是『SET if No
阅读全文
摘要:Cache 是你要考虑的第一件事,也是加快应用程序性能的第一件事。任何类型的缓存存储都是有价值的,但内存更可取。说到内存,Memcached 和 Redis 是首选。Memcached 可以说具有更高的性能,但有些人更喜欢 Redis,因为它具有数据持久性的能力。不管你的选择,我仍然选择 Redis
阅读全文
摘要:在实际开发中经常用到分库分表,比如用户表分成 100 张,那么这个时候查询数据需要设置分表,比如 Laravel 的 Model 类中提供了 setTable 方法: /** * Set the table associated with the model. * * @param string $
阅读全文
摘要:对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一份子。 对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾
阅读全文
摘要:swoole如何监听redis数据? Laravel使用swoole监听redis 开始之前,请先确保redis已经正确安装,并正常运行。 Laravel代码 在App\Events目录下新建RedisTest事件 <?php namespace App\Events; use Illuminate
阅读全文
摘要:当你准备开发一个 PHP 应用的时候,你可能会考虑安装这些本地 Web 服务器:XAMPP,WAMP , Laragon XAMPP: 如果你是一个 PHP Web 应用程序的初级开发者,这可能是你首选要使用的环境。 XAMPP 只提供了最基本的 PHP Web 应用服务,其中 Apache2 作为
阅读全文
摘要:简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本以上; (A)业务场景: 1、当一个业务触发以后需要启动一个定时任务,在指定时间内再去执行一个任务(
阅读全文
摘要:tp5 workerman安装不上怎么办? 今天在tp5下安装Workerman时出现了以下问题 $composer require topthink/think-worker Using version ^2.0 for topthink/think-worker ./composer.json
阅读全文
摘要:我估计我们所有人都遇到过这样的情况,即我们有一个写满路由的超大文件。不骗你,这让我很长一段时间几近抓狂,我不得不想个办法解决这个问题。 因此,这就是我最终用来构造路由文件的方法。 最初,我想到了利用路由组方法可以接收文件,这就是 laravel 在 RouteServiceProvider 处拆分路
阅读全文
摘要:简介 一般在框架中都会用到 composer 工具 , 用它来管理依赖。其中 composer 有类的自动加载机制,可以加载 composer 下载的库中的所有的类文件。那么 composer 的自动加载机制是怎么实现的呢? composer 自动加载原理 以在 Laravel 框架中为例: 1.
阅读全文
摘要:在 Laravel 项目中,用户可以上传任何大小的文件,出于安全目的,需要对这些文件进行静态加密。 Laravel 提供 encryption, 但它们主要用于加密值。 使用 encrypt 助手方法对像图像这样的小文件进行加密可以很好地工作,但是在此过程中,文件内容需要加载到内存中,这对于大文件来
阅读全文
摘要:前言 集合通过 Illuminate\Support\Collection 进行实例,Laravel的内核大部分的参数传递都用到了集合,但这并不代表集合就是好的。Laravel作为快捷并优雅的开发框架,是有他一定的道理所在的,并非因他的路由、DB、监听器等等。当你需要处理一组数组时,你可能就需要它帮
阅读全文
摘要:Laravel 团队昨天发布了 v7.4.0 版本,其中包含相当多的新特性,例如自定义的模型转换器接口、 When 高阶集合代理,以及从查询构建器中清除现有 order 的功能。 高阶的 When 集合代理 Loris Leiva 贡献了使用高阶代理的能力,它的方法是 Collection::Whe
阅读全文
摘要:原因 Hyperf 框架为了防止用户更新组件后,代理缓存没有更新导致启动报错。增加了以下钩子。 { "scripts": { "post-autoload-dump": [ "init-proxy.sh" ] } } 而 init-proxy.sh 脚本,会执行 php bin/hyperf.php
阅读全文
摘要:Laravel 的下一个主要发行版本 ,你可以直接在路由定义中自定义隐式路由模型绑定: Route::get('/posts/{post:slug}', function (Post $post) { // ... }); 目前,使用 Laravel 6,下文中的需求需要你像这样在模型上定义一个 g
阅读全文
摘要:从v5.4.12开始,Laravel Collections现在包括一个when方法,允许您对项目执行条件操作,而不会中断链。 像所有其他Laravel 集合方法,这一个可以有很多用例,选择其中一个例子,想到的是能够基于查询字符串参数进行过滤。 为了演示这个例子,让我们假设我们有一个来自Larave
阅读全文
摘要:在swoole中,php可以借助其启动子进程的方式,实现php的多进程: <?php $s_time = time(); echo '开始时间:'.date('H:i:s',$s_time).PHP_EOL; //进程数 $work_number=6; // $worker=[]; //模拟地址 $
阅读全文
摘要:Linux 安装Swoole 练习环境: 虚拟机:Oracle VM VirtualBox 5.2.4 r119785 (Qt5.6.2)。 系统:CentOS Linux release 7.6.1810 (Core) x86_64-Minimal版。 (1)建立一个目录放swoole的安装文件
阅读全文
摘要:redis 实现限速器的几种方式。 GET + INCR + EXPIRE 先获取 key 的当前值,如果没有超出限制再执行 INCR 增1,如果 key 不存在,使用 redis 的事务初始化 key 和过期时间。 伪代码: count = redis.GET(key) if redis retu
阅读全文
摘要:RoadRunner是一个用Go语言实现的高性能PSR-7服务器,你没看错,是Go语言实现的。 RoadRunner首先用Go实现了一个高性能的服务器,然后通过goridge IPC把请求转发给多个PHP CLI Worker,Worker会把请求重新封装成PSR-7 Request交给框架进行处理
阅读全文
摘要:如果你还不知道 composer,前往 composer 的主页然后开始阅读吧。 我曾见过许多人被他们使用的 composer 包之间依赖的约束问题所困扰。希望这篇文章能指出某些问题的原因,并提供避免这些问题的方法。我会从最糟的情景入手,并一步步改进约束。 全能的星号:* Composer 有一个依
阅读全文
摘要:摘要:本文实例讲述了php异步多线程swoole用法。分享给大家供大家参考。具体分析如下:swoole重新定义PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务,下面的实例就可以证实这一功能。一般来说,Swoole提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步M
阅读全文
摘要:2020年PHP 面试问题(一) 2020年PHP 面试问题(二) 一.数据库三范式 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解; 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生
阅读全文