05 2020 档案
摘要:基于laravel制作API接口 关于APIAPI(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。需要注意的是:API有它的具
阅读全文
摘要:linux 如何运行一个程序 linux 在运行任何程序之时,都要调用 execve 系统调用函数,然后把你的程序和你给的参数以及环境参数扔给程序的入口函数。 入口函数 php【php 脚本依赖 php 解释器】解释器运行,源码就是 c【真是废话,谁不知道,用我来逼逼半天】入口函数就是 main【如
阅读全文
摘要:laravel 安装jwt-auth及验证 1、使用composer安装jwt,cmd到项目文件夹中; composer require tymon/jwt-auth 1.0.*(这里版本号根据自己的需要写) 安装jwt ,参考官方文档https://jwt-auth.readthedocs.io/
阅读全文
摘要:TL;DR PHP 8 的 JIT(Just In Time)编译器将作为扩展集成到 php 中 Opcache 扩展 用于运行时将某些操作码直接转换为从 cpu 指令。 这意味着使用 JIT 后,Zend VM 不需要解释某些操作码,并且这些指令将直接作为 CPU 级指令执行。 PHP 8 的 J
阅读全文
摘要:截至 Laravel 7,共有 6 个可用的缓存驱动程序,其中 APC 是最佳实践,而文件驱动程序是唯一不需要额外设置的驱动程序。 我昨晚与一位朋友交谈,他提到他们使用 Redis 作为缓存驱动程序,这让我想到我还有一个仍然使用文件驱动程序的项目。 我想我可以使用一些内存驱动缓存,以获得更好的性能,
阅读全文
摘要:前段时间做项目时候,想要在不改变方法签名的情况下,给 Model::find 方法做个缓存。而且想要做到即插即用。 1.先看一下当我们调用 find 方法时,框架干了什么? 找到 Illuminate\Database\Eloquent\Model 的代码,搜索 find,没有该方法。看来是走了 _
阅读全文
摘要:最近我不得不在 Laravel 7 实现 通用唯一识别码 ( UUIDs ),并遇到一些问题。我希望这帖子可为其他正在做相同事情的人解惑。 使用 UUIDs 的高级理由 A) 它们从你的 统一资源定位符 移除编号的 身份识别号 ,故用户不能看到你的应用已创建多少确定的对象。例如: https://m
阅读全文
摘要:控制台的传奇人物 Nuno Maduro 已经将 Pest 开源了,这是一个注重简单性的优雅 PHP 测试框架. 下面有一个简单的例子,如果你使用过其他测试工具,比如 Mocha 或者 Jest,你就会对它觉得熟悉: test('asserts true is true', function ()
阅读全文
摘要:新的 PHP 主要版本 PHP8 预计将于 2020 年底发布。 它现在正处于非常活跃的开发中,所以在接下来的几个月里,开发速度和开发进程可能会有很大的变化。 官方群点击此处。 在这篇文章中,我会罗列出 PHP8 中会发生的一些改变:新功能、性能改进和突破性变化。 因为 PHP8 是一个新的主要版本
阅读全文
摘要:Redis持久化过程一直是影响redis性能的常见因素,如何监控持久化以及如何优化持久化过程呢?下面我们就一起来看看吧。 fork的监控及优化 不管是使用哪种持久化,RDB持久化或AOF重写,主进程都会fork出一个子进程,在子进程里完成rdb文件的生成或aof的重写。fork操作对于操作系统来说属
阅读全文
摘要:使用 Composer 安装 composer require easyswoole/easyswoole=3.x php vendor/bin/easyswoole install 启动框架 php easyswoole start nginx转发 server { root /data/wwwr
阅读全文
摘要:原文链接 分享:[分享] 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer 面试题解析 看你简历里也有用过 Go,Go 和 PHP 在运行的时候有什么区别和优势? 题主原回答:PHP 每个请求进来时都会创建 fpm-worker 进程,从而导致系统并发高时 CPU 会产生频繁创建进程的开销,而 G
阅读全文
摘要:在秒杀,抢购等并发场景下,可能会出现超卖的现象,在 PHP 语言中并没有原生提供并发的解决方案,因此就需要借助其他方式来实现并发控制。 列出常见的解决方案有: 使用队列,额外起一个进程处理队列,并发请求都放到队列中,由额外进程串行处理,并发问题就不存在了,但是要额外进程支持以及处理延迟严重,本文不先
阅读全文
摘要:1. 数据发送过程 我的官方群点击此处。 首先由客户端将数据发往缓冲区 (服务端并不是直接收到的), 对于客户端来说,这次的数据即是发送成功了, 对于服务端是否真正的收到他是不知道的, 然后再由服务端从缓冲区中读取数据。图解: 2. 什么是数据边界 因为 TCP 是流式传输,对于服务端来说并不知道此
阅读全文
摘要:PHP 内核:foreach 是如何工作的(一) PHP 5 内部数组指针和散列指针 PHP 5 中的数组有一个专用的 “内部数组指针”(IAP),它适当地支持修改:每当删除一个元素时,都会检查 IAP 是否指向该元素。 如果是,则转发到下一个元素。 虽然 foreach 确实使用了 IAP,但还有
阅读全文
摘要:foreach 是如何工作的? PHP 内核:foreach 是如何工作的(二) 首先声明,我知道 foreach 是什么,也知道怎么去用它。但这个问题关心的是,内核中 foreach 是如何运行的,我不想回答关于 “如何使用 foreach 循环数组” 的任何问题。 很长时间我都认为 forea
阅读全文
摘要:安装 Kafka 服务 直接到 kafka 官网 , 下载最新的 wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz 解压,进入目录 tar -zxvf kafka_2.13-2.5.0.tgz cd kafk
阅读全文
摘要:应用场景 为什么要用呢,有什么好处?这应该放在最开头说,一件东西你只有了解它是干什么的,适合干什么,才能更好的与自己的项目相结合,用到哪里学到哪里,学了不用等于不会,我们平时就应该多考虑一些这样的问题:自己做个什么项目功能能跟 xx 技术相结合呢?这个 xx 技术放在这种业务场景下行不行呢?而不是
阅读全文
摘要:append class User extends Model { protected $appends = ['is_adult']; public function getIsAdultAttribute() { return $this->attribute['age'] > 18; } }
阅读全文
摘要:确实,PHP 接口是有它的目的的。 它们是契约,是给其他开发人员的说明手册。然而,还是很难理解接口有什么用。 基础 接口是抽象的类,无法直接实例化,但是可被实现。 这是一个基本的例子 interface MyInterface { public function setName(string $na
阅读全文
摘要:延时队列 Delayproducer.Php Amqpbuilder.Php AmqpBuilder.php <?php declare(strict_types = 1); namespace App\Components\Amqp; use Hyperf\Amqp\Builder\Builder
阅读全文
摘要:Nano, by Hyperf Nano 是一款零配置、无骨架、极小化的 Hyperf 发行版,通过 Nano 可以让您仅仅通过 1 个 PHP 文件即可快速搭建一个 Hyperf 应用。 设计理念 Svelte 的作者提出过一个论断:“框架不是用来组织代码的,是用来组织思路的”。而 Nano 最突
阅读全文
摘要:本文大部分内容参照 AST 的 RFC 文档而成:https://wiki.php.net/rfc/abstract_syntax_tree,为了易于理解从源文档中节选部分进行介绍。 我的官方群点击此处。 本文并不会告诉你抽象语法树是什么,这需要你自己去了解,这里只是描述 AST 给 PHP 带来的
阅读全文
摘要:Workerman Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。
阅读全文
摘要:我们知道从 PHP 5.3 起三元运算符 ? : 有一个写法简洁写法是这样的: <?php $a = 0; $b = $a ?: 1; # $b 1 这实际上相当于: <?php $a = 0; $b = $a ? $a : 1; # $b 1 在 PHP5 中,语法分析是这样写的: | expr
阅读全文
摘要:Laravel Dusk 是 Laravel 的一个表达性强、易于使用,且功能强大的浏览器自动化测试工具。通过 Dusk 可以以编程的方式测试 JavaScript 驱动的应用程序。在使用 Dusk 编写测试案例时,我经常遇到一些限制。现在我在本文中将这些情况以及如何克服分享给大家。 1. 填充隐藏
阅读全文
摘要:Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 本篇文章,主要介绍利用PHP使用Redis,主要的应用场景。 简单字符串缓存实战 $redis->connect('127.0.0.1', 6379); $st
阅读全文
摘要:先扯些这些内容: TCP/IP TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传输层中有TCP协议与UDP协议。 在应用层有: TCP包括FTP、HTTP、TELNET、SMTP等协议 UDP包括DN
阅读全文
摘要:安装 Redis 执行命令 我的官方群点击此处。 docker pull redis 部署方案 启动三台机器,6379 容器作为主节点,其余作为从节点 开始准备工作 目录结构 ├── conf │ ├── redis_6379.conf │ ├── redis_6380.conf │ ├── red
阅读全文
摘要:在网上商城上,我们经常可以看到多级分类、子分类、甚至无限极分类。本文将向你展示如何优雅的通过 Laravel Eloquent 将其实现。 我们会创建一个微型项目来展示儿童商店的分类,总共有 5 级,如下: 数据库迁移 简单的数据表结构: Schema::create('categories', f
阅读全文
摘要:一、前言 19年初,网上公开了2个Thinkphp5的RCE漏洞,漏洞非常好用,导致有很多攻击者用扫描器进行全网扫描。我们通过ips设备持续观察到大量利用这几个漏洞进行批量getshell的攻击流量,本文主要从流量角度简要分析和利用thinkphp进行攻击的全网扫描和getshell流量痕迹。 二、
阅读全文
摘要:本文的实现主要是基于 myclabs/php-enum 扩展包。 今天来分享下如何管理 PHP 的枚举类型。 一种常见的方式是,使用常量来代表枚举类型 const YES = '是'; const NO = '否'; 可以在这个基础上更进一步,将其封装成类,以便于管理 class BoolEnum
阅读全文
摘要:升级 php7 后 isset 不太对了 公司升级 php7 后出现了一个问题 类似这样 isset($post->user->name) 始终为 false 之前的 php 5.6 就很正常 laravel 版本是 5.1.35(很久没升级了) 先看看 isset isset 用来检测变量是否设置
阅读全文
摘要:在使用跨平台应用程序时, API 是一个非常不错的选择。 除了网站,您的产品可能还有 Android 和 iOS 应用程序。 在这种情况下, API 也是同样出色的,因为您可以在不更改任何后端代码的情况下编写不同的前端。 使用 API 时,只需使用一些参数点击 GET , POST 或其他类型的请求
阅读全文
摘要:事件 1. 事件和中间件有一点相似,只不过事件更加的精准定位更细腻的业务场景; 2. 事件可定义:事件类、事件监听类、事件订阅类; 3. 我们先创建一个测试事件的类:TestEvent.php,手动创建一个测试类; public function __construct() { //注册监听器 Ev
阅读全文
摘要:步骤 1. 创建一个新项目 我更喜欢使用 Laravel 安装程序。 我更喜欢使用 Laravel 安装程序。 laravel new lara-dg 我更喜欢使用 SQLite 进行测试和软件包开发。修改你的.env 文件: DB_CONNECTION=sqlite DB_DATABASE=/Us
阅读全文
摘要:PHP7 源码安装 步骤 1、解压 tar -xjvf 2、configure 3、make 4、make install 安装上传下载命令 yum install -y lrzsz linux 操作 [root@VM_0_5_centos ~]# cd /home/ [root@VM_0_5_ce
阅读全文
摘要:1、创建聊天消息表,其表的字段有消息内容,发送时间和发送者的名称; SQL: CREATE TABLE `guanhui`.`message` ( `id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '消息ID' , `content` VARCHAR(255)
阅读全文
摘要:任何你使用的现代框架,都可能严重依赖于依赖注入。但是你知道依赖注入代表的真正含义吗?或者换一个更好的角度 - 你知道依赖注入不是什么吗? 依赖容器 虽然每个现代框架都附带依赖容器 — 一个用于构建对象的大盒子 — 但这并不能保证你会按照预期的方式使用依赖注入模式。 容器让依赖项更加容易注入到类中,但
阅读全文
摘要:PHP7 VS PHP5.6 1. Opcache 记得启用Zend Opcache, 因为PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快, 所以之前测试时期就发生了有人一直没有启用Opcache的事情. 启用Opcache非常简单, 在php.ini配置文件中加入:
阅读全文
摘要:废弃 一些函数已经被废弃或者移除,请不要使用它们 __autoload - 7.2 版本废弃 call_user_method_array - 7.0 版本移除 call_user_method - 7.0 版本移除 判断 类的存在性检查 相关函数 class_exists - 判断类是否存在 in
阅读全文
摘要:如果您熟悉 Java,可能您已经知道 POJO (普通 Java 类). 因为 POJO 这个词最早是由 Martin Fowler、Rebecca Parsons 和 Josh MacKenzie 于 2000 年在 Java 编程语言上创造的。 POJO 使我们更容易理解类对象中的数据结构类型。
阅读全文
摘要:在 Laravel 程序中上传文件时,请求验证可以很好验证上传的文件。你可以要求上传文件必须为 图片 , 也可以限制文件字节 大小 , 也可以根据 mime types 或者 文件扩展名 过滤文件。 如果我们希望用户上载 ZIP 文件,我们可以结合规则并像如下所示的内容使用: return [ 'f
阅读全文
摘要:简介 首先说说, 这个是干啥的. 我见过很多的项目中, 用PHP文件做配置的, 一个config目录下可能有十几个甚至数十个.php配置文件, 里面都是各种各样的array, 还有甚者会把一些词典文件(比如中文/英文对照)也放到配置中去. 这就导致配置文件的解析耗费了很大的性能(诚然, 用了opca
阅读全文
摘要:前言 首先我们玩的是比较经典的选择排序选择排序也是我们本系列的第一个 O(n^2) 算法很多人认为最优的算法是 O(n log n) 级别的算法 这样就衍生出了一个问题 为什么要学习 O(n^2) 级别的算法? 基础: O(n^2) 相对而言比较基础,由简入难。很多时候我们做项目,或者是做其他业务的
阅读全文
摘要:这里有 10+ 个用来搭建 Laravel 应用的包 为何会创建这个包的列表?因为我是一个「比较懒」的开发者,在脸书上是多个 Laravel 小组的成员。平日遇到最多的问题就是开发是需要用那些包。我很懒所以我不想每次都从头开始搞这些东东。 为何此文没有包括管理包?它们将会在另外一篇文章中进行讲解。
阅读全文