拥有php标签的文章

设计模式之注册器模式

注册器模式1. 注册器模式是一种基础常见的设计模式,它的主要意思是把多个类的实例注册到一个注册器类中去,然后需要哪个类,由这个注册器类统一调取。 下面实现一个简单的注册器类```php<?php //注册器模式 class Register { //保存映射到注册器上的对象 protected static $object; //将对象映射到注册器上 public static function set($alias, $obj){ sel
阅读全文

利用Swoole实现简单IM聊天

利用Swoole实现一个简单的IM通讯聊天1. 为了大家方便理解,直接上代码,并在代码中写了详细注释 服务端代码如下```php<?php//创建websocket服务器并监听9501 端口$ws = new Swoole\WebSocket\Server('0.0.0.0',9501);//当用户连接后,执行的函数$wson('open',function ($ws,$request){ //控制台中输出 echo "新用户 {$
阅读全文

设计模式之单例模式

单例模式 什么是单例模式,单例模式的作用是什么? 1. 首先,单例模式也是我们设计模式中,最基本,经常使用的一种模式!在我们的业务代码当中,本来我们要通过Db来查询数据库,但是我们如果不是用的单例模式的时候,每次查询都要重复new Db对象并使用,这个地方就造成了系统资源的浪费。所以我们最常见的单例模式的使用,就是在数据库操作当中以及其他的I/O操作。1. 单例类只能有一个实例。1. 单例类必须自己创建自己的唯一实例。 1. 单例类必须给所有其他对象提
阅读全文

设计模式之简单工厂模式

简单工厂模式 什么是工厂模式,工厂模式的作用是什么?1. 首先,工厂模式是我们设计模式中,最基本,经常使用的一种模式!在我们的业务代码当中,本来我们要获取一个类的实例,需要用到new关键字。但是如果new 直接写到业务代码里,一个类在很多地方都实例化过,如果项目工程比较大,当这个类出了什么问题,比如:需要维护或者替换的时候,因为我们是在业务当中直接new的,所以需要每个文件都去修改,那么就会出现一系列的问题。 1. 工厂模式,顾名思义,就是不用new来获得实例,而是把业务类放进
阅读全文

Linux下使用yum安装LNMP环境

如何使用yum搭建有需求的LNMP环境本人使用的是centos7系统,就以centos7的系统搭建为例 Nginx安装1. 下载/安装步骤: 2. 创建/编辑文件:`vi /etc/yum.repos.d/nginx.repo` 3. 编辑内容:`OS代表系统 OSRELEASE 代表系统版本号` ```shellname=nginx repo baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearc
阅读全文

swoole如何对ip限制访问频率

swoole如何对ip限制访问频率在我们开发api的过程中,有的时候我们还需要考虑单个用户(ip)访问频率控制,避免被恶意调用。归根到底也就只有两个步骤: 用户访问要统计次数 执行操作逻辑之前要判断次数频率是否过高,过高则不执行 easyswoole中实现Ip访问频率限制本文章举例的是在easyswoole框架中实现的代码,在swoole原生中实现方式是一样的。只要在对应的回调事件做判断拦截处理即可。 使用swoole\Table,储存用户访问情况(也
阅读全文

Mysql索引优化

写在前面在我们日常使用数据库的时候,肯定避免不了对数据库的优化。那么对数据库的优化又少了不`索引`的知识。是的,建立`索引`能极大地提高查询的效率。那么你知道吗,如果合理建立索引,可以更大地榨出数据库的性能——也就等同于进一步提高查询效率。写下这篇文章就是为了记录一下对索引的优化,合理建立索引。 什么是索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。我们可以简单理解为:快速查找排好序的一种数据结构。Mysql索引主要有两种结
阅读全文

关于php对象池

  • 仙士可
  • 2019-07-16 23:15:31
  • PHP
  • php
生命周期对象池需要从php的生命周期说起,php的应用大部分都是web网站,而大部分web网站使用的都是cgi模式进行运行的,导致php生命周期跟随着请求结束而结束,从而没有对象池的概念cgi模式的一次请求可以分为以下几步:1. 用户请求1. web服务器(apache,nginx,iis等)接收请求1. 服务器通过cgi协议调用php,运行php文件1. php文件处理逻辑,返回数据,php进程 销毁/回收(该次执行的php变量内存等全部回收)1. web服务器接收数据
阅读全文

PHP自动加载与composer自动加载

当我们编写面向对象的程序时,通常是将类分别放在`不同的文件中`。但这样一来,当我们调用其他类的时候,则需要先手动引入该文件(否则会因为当前程序中没有该类名的类而报错)久而久之加载的列表就会`很混乱复杂`,不方便管理。```php文件A.php<?phpclass A{ public function run(){ echo "这是在A类中的方法"; }}?文件B.php<?phprequire "A.php"; // 在这里
阅读全文

手把手教你写一个composer包

什么是composer`Composer` 是一个命令行工具,它的作用就是帮我们的项目`管理所依赖的开发包`,属于`依赖包管理工具`。 什么是依赖包管理工具由于程序届的《开源运动》,我们可以在社区找到很多别人提供的工具,也可以向社区贡献我们的代码。在github还没有兴起的年代,我们是需要到工具的官网下载代码,比如jquery。然后放到我们自己的项目目录里,再在我们的页面中使用。但是…当一个网站依赖的包越来越多,我们会发现这是一件非常麻烦的事情: 安装新包,代码目录管理等
阅读全文