
PHP
文章平均质量分 69
Watkin Lee
左手程式,右手文集
展开
-
PHP深入
通俗的讲workerman就是用PHP写的一个更底层更通用的网络服务框架实际上workerman类似一个PHP版本的Nginx,核心也是多进程+Epoll+非阻塞io。workerman每个进程能维持上万并发连接。由于本身常驻内存,不依赖Apache,Nginx,PHP-FPM这些容器,所以永远超高的性能。原创 2022-11-01 15:11:26 · 2593 阅读 · 0 评论 -
PHP异常错误处理
另外,还可以使用 try-catch-finally三层嵌套,其中try 中return 后finally会继续执行,如果finally中也有 return;但是这些错误我们都是难以捕获的(就是我们认为代码会一切正常,谁知它却报了个Bug)我们最好调用 try-catch 去处理,这样很多未知的错误我们都可以捕获到。规定在哪个错误报告级别会显示用户定义的错误。默认是 "E_ALL"。其次 try-catch 是可以嵌套的使用的,规定发生错误时运行的函数。原创 2022-10-31 15:03:05 · 244 阅读 · 0 评论 -
PHP编码技巧
sortTable变量开辟了占用空间,但换的更高的速度;语言结构的好处:比函数快,语言结构在错误处理上比较鲁棒,函数在php.ini上可以被禁用.类的命名必须遵循大写开头的驼峰命名,而方法遵循小写驼峰命名规范。>这个括号:因为可以保证纯的PHP代码,不然容易在。同环境下的不同的php的php.ini里面的错误设置都可能不一样。1. 把常量放前面,用"1==$a" 替换 "$a==1"比如,当我们把"=="打成"="时, "1=$a"就会报错。命名的重要,命名需要有辨识度,易懂,有实际含义。原创 2022-11-25 10:08:37 · 550 阅读 · 0 评论 -
php 图片压缩类
PHP图片压缩类,部分来源于网络(侵则删),部分自己改写拼凑成一个类。该类封装了了PHP7没有的imagecreatefrombmp等的相关方法(7.2有提供这个方法)<?php/** * Created by PhpStorm. * User: Administrator * Date: 2019/12/18 * Time: 9:56 */namespace App...原创 2019-12-28 00:44:18 · 406 阅读 · 0 评论 -
用户搜索之根据同城同行优先排序
在用户查询时,有时候有需要把“同城”,“同行”等相关度教高的用户排在前面的需求。而使用sql的排序可以简单的实现这个需求,但也有不全面的地方。//根据同乡同行排序$data = $userModel->with(['hometown','trade','city'])->orderByRaw("ABS({$self->trade_id}- trade_id) + ...原创 2019-11-26 14:43:35 · 474 阅读 · 0 评论 -
php采集模拟点击伪造IP,伪造浏览器useragent伪造来源防反爬虫例子
先上两个文件 index.php 一个curl.phpindex.php是我们要采集的。以下是源码$client_ip = getip(); $referer = getreferer(); $allow_ip = '192.168.1.100'; $allow_referer = 'http://www.amztool.cn'; $useragent=$_SER...转载 2019-11-15 15:24:01 · 698 阅读 · 0 评论 -
Laravel ORM中with,where, has,wherehas的使用
共同之处,这三个函数的参数,都是 model 中的 relationship function 的名字。1 对 N N 对 Nwith类似于 SQL 中的 left join。左侧数据会全部显示。with 是 eager loading,即预加载关系数据。has类似于 SQL 中的 inner join。当右侧有数据时才会显示。注意,has 跟 whereHas 并...原创 2019-10-20 14:51:25 · 6241 阅读 · 0 评论 -
PHP观察者模式
一.观察者模式特点解释:观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。场景:一个事件发生后,要执行一连串更新操作.传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新得逻辑增多之后,代码会变得难以维护.这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码,而观察者模式实现了低耦合,非侵入式的通知与更新机制二...原创 2019-03-29 17:48:41 · 639 阅读 · 0 评论 -
PHP Trait
Trait自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait [单词意思为: 特点,特性]。Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式,避免传统多继承和 Mixin 类相...原创 2019-03-26 11:23:20 · 188 阅读 · 0 评论 -
PHP实现单例模式
一. 单例模式的特点一个类在整个应用中只能有一个实例 该类必须自行在内部创建这个实例 必须可以自行向整个系统提供这个实例应用场景: 在一个应用中会存在大量连接数据库的操作,如果不用单例模式,那每次都要new操作,但是每次new都会消耗大量的内存资源和系统资源,而且每次打开和关闭数据库连接都是对数据库的一种极大考验和浪费。二 . 代码要点1. __construct和__clon...原创 2019-03-27 15:28:01 · 962 阅读 · 0 评论 -
PHP实现工厂模式
一. 工厂模式的特点特点 :将调用者和创建者分离,调用者直接向工厂类请求获取调用对象,减少代码耦合,提高系统的维护性和扩展性应用场景:有多个产品类时就要用到工厂模式,比如在数据库连接中,我们可以采用多种数据库连接方法,有mysql扩展,mysqli扩展,PDO扩展等,在这种情况下我们可以一个扩展对应一个产品类,然后采用工厂模式。二.代码要点1.分两部分,产品类和工厂类,其中产...原创 2019-03-27 16:20:43 · 2303 阅读 · 0 评论 -
PHP实现注册树模式
一. 模式特点特点: 将对象注册到一个类的成员变量中,实现全局访问应用场景: 某些重要的值需要全局调用时可以采用这种模式二. 代码要点.封装多个静态方法,实现设置值,取值和销毁值Class Register{ public static $treeList; //设置 static public function set($key,$valu...原创 2019-03-27 18:21:03 · 520 阅读 · 0 评论 -
PHP使用curl_multi实现并发请求
php的curl_mulit系列的函数可以实现并发请求,抓取页面各函数作用解释:curl_multi_init()初始化一个curl批处理句柄资源。curl_multi_add_handle()向curl批处理会话中添加单独的curl句柄资源。curl_multi_add_handle()函数有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄...原创 2019-05-09 11:24:40 · 873 阅读 · 0 评论 -
PHP解析URL返回组成部分
parse_url(PHP 4, PHP 5, PHP 7)parse_url—解析 URL,返回其组成部分说明parse_url(string$url[,int$component= -1] ) :mixed本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面...转载 2019-05-16 15:33:58 · 694 阅读 · 0 评论 -
红包,大转盘等游戏设计
一.起因最近在做一些关于红包和大转盘的项目,从项目设计到实施,中间花费了不少的心思。所以趁着现在有空记录下。二.红包红包的产品设计我们可以参考微信红包的产品设计,分为普通红包和拼手气红包。普通红包就是把金额均等平分,而拼手气红包则是把一个固定的金额随机分成不等的份额。思路:我们可以设计一个一个红包金额表,红包数据我们可以提前生成,然后再把红包金额放入到redis中去,用redi...原创 2019-07-01 22:51:50 · 653 阅读 · 0 评论 -
composer常用命令
一. selfupdate更新 composer 本身,请经常执行 composer selfupdate 以保持 Composer 一直是最新版本。composer selfupdate 等价于 composer self-update二. composer init根据设置生成一个特定的composer.json文件,设置如下root@dduan:/home/ddu...原创 2019-09-24 11:25:02 · 625 阅读 · 0 评论 -
PHP实现适配器模式
一.适配器模式的特点适配器模式核心思想:把对某些相似的类的操作转化为一个统一的“接口”(这里是比喻的说话)--适配器,或者比喻为一个“界面”,统一或屏蔽了那些类的细节。适配器模式还构造了一种“机制”,使“适配”的类可以很容易的增减,而不用修改与适配器交互的代码,符合“减少代码间耦合”的设计原则。角色:目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期...原创 2019-03-29 16:32:15 · 1936 阅读 · 0 评论 -
PHP超全局变量
1.超全局变量的由来 因为在PHP的运行当中,经常需要一些变量去存储运行环境的一些参数,以及设置,这些变量称为预定义变量。 而从 PHP 4.1.0 开始,PHP 提供了一套附加的预定数组,这些数组变量包含了来自 web 服务器(如果可用),运行环境,和用户输入的数据。这些数组非常特别,它们在全局范围内自动生效,例如,在任何范围内自动生效。因此通常被称为自动全局变量(autog...原创 2019-03-15 21:57:57 · 277 阅读 · 0 评论 -
PHP实现登录失败次数限制
登陆是网站中比较容易受到攻击的一个地方,那么我们如何对登陆功能的安全性加强呢?原创 2017-09-30 09:53:48 · 2447 阅读 · 0 评论 -
PHP安全编程
一 . 外部策略1.处理用户的提交的数据 我们的网站(应用)每天通过各种途径接收大量的外部数据,如: $_GET , $_POST , $_REQUEST , $_COOKIE , $argv , php://stdin , php://input , file_get_contents远程的数据库信息 , 远程API , 来自客户端的数据以上的数据源都很可能被作为数据源插入到你的PHP脚本中从...原创 2018-02-08 11:37:47 · 280 阅读 · 0 评论 -
谈谈mysql分表
1.分表类型 分表有两种形式:分别是水平分表和垂直分表: 水平分表是指创建多个表结构相同的表,然后根据业务逻辑的需要把数据分别放到不同的表中去,水平分割会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要union操作。在许多数据库应用中,这种复杂性会超过它带来的优点,但当某个表的数据量特别大的时候(比如百万级别数据),那就得考虑分区或者水平分表了垂直分表是指 某个表的字段太...原创 2018-02-18 17:24:58 · 330 阅读 · 0 评论 -
使用phpqrcode生成二维码
1.先去官网下载phpqrcode的类库2.下载后解压放进你的项目中去,比如我的项目是使用tp3.2框架的,就把其放进ThinkPHP/Library/Vendor中去3.在项目中使用引入phpqrcode文件并实例化即可生成二维码public function qrcode($shop_id,$agent_id) { vendor("phpqrcode.phpqrcode...原创 2018-03-10 10:10:22 · 338 阅读 · 0 评论 -
PHP会话控制
1.什么是会话控制? 答:简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是能够在网站中跟踪一个变量,通过这个变量,系统能识别出相应的用户信息 2.为什么会有会话控制? 答:因为HTTP协议是WEB服务器与客户端(浏览器)相互通信的协议,HTTP协议是无状态的协议。HTTP协议本身没有办法区分不同用户,要识别用户就要用会话控制,HTTP将无法告诉我们这两个请求是来自同一个用户3.PH...原创 2018-03-03 09:54:54 · 255 阅读 · 0 评论 -
阿里大于PHP短信发送功能
1.阿里大于账号注册: 支付宝注册:个人就用个人的支付宝,企业的话就用企业的支付宝(但这个需要认证),申请账号后 进入管理中心创建应用,创建应用之后就可以进入应用设置,查看其AppKey和 Secret2.可以订阅阿里大于的消息通知接口 进入管理中心,点击右上角的开发者控制台,在应用列表中找到需要使用消息 接口的应用,进入应用管理界面3.应用开发: 进入管理中心,在左侧栏中找到“应用管理-sdk下...原创 2018-03-04 23:37:36 · 444 阅读 · 0 评论 -
使用PHPExcel导入导出数据
1.上官方的GitHub的地址的下载PHPExcel2.把PHPExcel放到你的项目中去3.项目中的开发:以ThinkPHP框架开发项目为例,PHPExcel放置于ThinkPHP / Lirbray /组织/的Util 导出: import("Org.Util.PHPExcel"); //引入PHPExcel $PHPExcel = new \PHPExce...原创 2018-03-13 11:44:14 · 305 阅读 · 0 评论 -
Laravel数据库操作的三种方式
Laravel提供了3种操作数据库方式:DB facade(原始方式)、查询构造器和Eloquent ORM。数据库的配置文件在config目录下的database.php里。打开这个文件,找到mysql的配置项。这里有个env,它其实是调用了laravel根目录下的.env文件,这个文件存储了数据库的配置信息。打开它。修改为项目的数据库信息即可。请自行建一个数据库,其中数据库得包含vipinfo...转载 2018-05-26 10:19:10 · 615 阅读 · 0 评论 -
PHP迭代器与生成器
一.迭代器分析:想一下,如果把集合对象和对集合对象的操作放在一起,当我们想换一种方式遍历集合对象中元素时,就需要修改集合对象了,违背“单一职责原则”,而迭代器模式将数据结构和数据结构的算法分离开,两者可独立发展。优点:1.支持多种遍历方式。比如有序列表,我们根据需要提供正序遍历、倒序遍历两种迭代器。用户只需要得到我们的迭代器,就可以对集合执行遍历操作2.简化了聚合类。由于引入了迭代...原创 2018-08-11 11:02:10 · 1597 阅读 · 0 评论 -
闭包与匿名函数
闭包和匿名函数在PHP5.3.0中引入,闭包是指在创建时封装周围状态的函数,即便闭包所存在的环境不存在了,闭包中封装的状态依然存在。匿名函数就是没有名称的函数,匿名函数可以赋值给变量,还能像其他任何PHP对象那样传递。不过匿名函数任是函数,因此可以调用,还可以传入参数,适合作为函数或方法的回调理论上讲,闭包和匿名函数使用的句法和普通函数时不同的概念。不过,PHP将其视作相同的概念。所以,在...原创 2018-08-18 00:00:43 · 506 阅读 · 0 评论 -
PHP7新特性1
一. 前言PHP7具有很多用于编写高性能,高效能的新特性,同时也移除了一些历史版本中过时的特性,若使用过时的特性的话,在PHP7中会触发一个Error错误。目前大多数的致命错误都可以被异常捕获。所以PHP不再显示一些不标准的致命错误,取而代之的是抛出一个携带很多可用信息的异常。二.OOP特性1.类型声明:函数或者是对象的方法都可以使用在PHP7之前,我们在函数和类之间传递参数时不需...原创 2019-02-09 14:44:43 · 267 阅读 · 0 评论 -
PHP7新特性2
1.use声明新特性 在日常开发中,我们需要通过命名空间中的PHP声明来显示引入很多类,函数,常量。这导致了在文件顶部需要写很多的use声明,显得很繁琐。 为解决这个问题,PHP7引用了批量的use声明,分别由1.非混合模式的use声明。2.混合模式的use声明。 3.复合模式的use声明。下面是非混合模式的use声明。use app\admin\controller\{Bo...原创 2019-02-12 22:10:05 · 207 阅读 · 0 评论 -
PHP常用基础函数总结1
一. 变量检查 [empty(), isset(), is_null() 的区别 ]在日常开发中,我们经常需要判断变量的值,如我们需要判断某个方法里面的实参是否是“空”,而我们经常会用到empty,isset,is_null等函数。1.empty() : 判断变量是否是零是否是空,是则返回true,相反则返回false.需要注意的是,以下几种类型都会被列入“零”和“空”的范畴."...原创 2019-03-03 14:35:43 · 342 阅读 · 0 评论 -
PHP的前世今生
PHP历史1.回顾过去php是一门解析型服务器端脚本语言,也就是说编写php代码后要上传到Web服务器,让解析器执行这些代码,也就是说php往往在Apache或nginx等服务器中运行,用于服务动态内容,除此之外php也能用来构建强大的命令行应用(就像bash,Ruby,Python等语言一样)php的历史很混乱,PHP是拉斯姆斯.勒多夫编写的一系列CGI脚本 CGI(Comm原创 2017-05-15 22:30:47 · 525 阅读 · 0 评论