【PHP】
hevenue
这个作者很懒,什么都没留下…
展开
-
PHP设计模式 - 门面模式
门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。 案例:炒股票,新股民不了解证券知识做股票,是很容易亏钱的,需要学习的知识太多了,这样新手最好把炒股的事情委托给基金公司,基金公司了解证券知识,那么新股民把自己的股票托管给基金公司去运营,这样新股民不必了解哪只...转载 2019-05-06 23:38:45 · 176 阅读 · 0 评论 -
php公钥加密和私钥解密
$configArgs = array( 'config' => 'C:\xampp\apache\bin\openssl.cnf', "digest_alg" => "sha512", "private_key_bits" => 4096, "private_key_t原创 2018-01-30 17:04:47 · 1031 阅读 · 0 评论 -
PhpStorm集成PSR2代码自动检查
我们写代码要遵循一定的规范, 但是我们有时候会犯错,所以需要有一个检查机制。当我们犯错的时候检查机制会发挥作用。下面介绍一下如何在phpstrom上设置代码检查。代码规范php有很多规范,现代Php要求遵循的是PSR规范。PSR是PHP通用性框架小组FIG(PHP Framework Interop Group) 制定的PHP规范,是PHP开发的事实标准。关于PSR的中文文档,可以参考原创 2017-08-29 16:11:55 · 3738 阅读 · 1 评论 -
php des 加密解密实例
des加密是对称加密中在互联网应用的比较多的一种加密方式,PHP 通过mcrypt扩展库来支持des加密,要在Php中使用des加密,需要先安装mcrypt扩展库下面是加密解密的实例[php] view plain copy $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDA转载 2017-03-26 23:14:46 · 368 阅读 · 0 评论 -
php rsa加密解密实例
PHP服务端与客户端交互、提供开放api时,通常需要对敏感的部分api数据传输进行数据加密,这时候rsa非对称加密就能派上用处了,下面通过一个例子来说明如何用php来实现数据的加密解密1、加密解密的第一步是生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其转载 2017-03-26 23:12:32 · 613 阅读 · 0 评论 -
php持久登录
永久登录指的是在浏览器会话间进行持续验证的机制。换句话说,今天已登录的用户明天依然是处于登录状态,即使在多次访问之间的用户会话过期的情况下也是这样。永久登录的存在降低了你的验证机制的安全性,但它增加了可用性。不是在用户每次访问时麻烦用户进行身份验证,而是提供了记住登录的选择。据我观察,最常见的有缺陷的永久登录方案是将用户名和密码保存在一个cookie中。这样做的诱惑是可以理解的——不需要提转载 2017-03-26 16:14:18 · 346 阅读 · 0 评论 -
PHP之Zip扩展,解压缩文件,ZipArchive类
PHP ZipArchive 是PHP自带的扩展类,可以轻松实现ZIP文件的压缩和解压,使用前首先要确保PHP ZIP 扩展已经开启,具体开启方法就不说了,不同的平台开启PHP扩增的方法网上都有,如有疑问欢迎交流。这里整理一下常用的示例供参考。原创 2017-04-11 19:38:47 · 3091 阅读 · 0 评论 -
详解spl_autoload_register()函数
在了解这个函数之前先来看另一个函数:__autoload。 一、__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数。看下面例子: printit.class.php转载 2017-04-01 02:38:27 · 272 阅读 · 0 评论 -
yii框架autoload机制
Yii框架宣称自己的类加载方式很高效,是真正的“用时加载”,那究竟特别在哪里?今天研究了一下源码,发现其实是在代码级加了一层“路径缓存”。我们知道,要实现自己的autoload方法,需要采用spl_autoload_register()函数注册一个autoload方法,Yii注册的这个方法是YiiBase::autoload(),稍后再讲解这个方法的逻辑。另外,Yii一般都用Yii::impo转载 2017-04-01 02:36:37 · 306 阅读 · 0 评论 -
PHP程序守护进程化
一般Server程序都是运行在系统后台,这与普通的交互式命令行程序有很大的区别。glibc里有一个函数daemon。调用此函数,就可使当前进程脱离终端变成一个守护进程,具体内容参见man daemon。PHP中暂时没有此函数,当然如果你有兴趣的话,可以写一个PHP的扩展函数来实现。PHP命令行程序实现守护进程化有2种方法:一 、使用nohupnohup php myprog.转载 2017-04-01 01:47:55 · 400 阅读 · 0 评论 -
当Swoole遇上PHP
PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。 除了异步IO的支持之外,Swoole为PHP多进程的模式转载 2017-03-26 22:08:20 · 1465 阅读 · 0 评论 -
php生成证书和密钥
$dn = array( "countryName" => 'XX', //所在国家名称 "stateOrProvinceName" => 'State', //所在省份名称 "localityName" => 'SomewhereCity', //所在城市名称 "org原创 2018-01-30 17:17:21 · 951 阅读 · 0 评论 -
PHP的openssl加密扩展使用小结
PHP的openssl加密扩展使用小结引言互联网的发展史上,安全性一直是开发者们相当重视的一个主题,为了实现数据传输安全,我们需要保证:数据来源(非伪造请求)、数据完整性(没有被人修改过)、数据私密性(密文,无法直接读取)等。虽然现在已经有SSL/TLS协议实现的HTTPS协议,但是因在客户端上依赖浏览器的正确实现,而且效率又很低,所以一般的敏感数据(如交易支付信息等)还是转载 2018-01-30 18:12:23 · 536 阅读 · 0 评论 -
PHP设计模式 - 代理模式
给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式模式动机: 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内容和服务或者添加客户需要的额...转载 2019-05-06 23:34:23 · 124 阅读 · 0 评论 -
从 0 开始构建一个属于你自己的 PHP 框架
从 0 开始构建一个属于你自己的 PHP 框架markdown bug 请移步https://github.com/TIGERB/easy-php/blob/master/README-CN.md查看文章转载 2019-05-08 20:20:42 · 415 阅读 · 0 评论 -
PHP设计模式 - 访问者模式
访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 UML类图: 角色: 1.抽象访问者(State):为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,...转载 2019-05-08 18:00:31 · 209 阅读 · 0 评论 -
SAPI(PHP常见的四种运行模式)
SAPI(Server Application Programming Interface)服务器应用程序编程接口,即PHP与其他应用交互的接口,PHP脚本要执行有很多方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中。SAPI提供了一个和外部通信的接口,常见的SAPI有:cgi、fast-cgi、cli、apache模块的DLL、isapi-------------...转载 2019-04-25 19:58:32 · 337 阅读 · 0 评论 -
PHP Opcode内核实现 - [ PHP内核学习 ]
catalogue1. Opcode简介2. PHP中的Opcode3. opcode翻译执行(即时解释执行)1. Opcode简介opcode是计算机指令中的一部分,用于指定要执行的操作, 指令的格式和规范由处理器的指令规范指定。 除了指令本身以外通常还有指令所需要的操作数,可能有的指令不需要显式的操作数。 这些操作数可能是寄存器中的值,堆栈中的值,某块内存的值或者IO端...转载 2019-04-25 19:44:47 · 402 阅读 · 0 评论 -
PHP解释器引擎执行流程 - [ PHP内核学习 ]
catalogue1. SAPI接口2. PHP CLI模式解释执行脚本流程3. PHP Zend Complile/Execute函数接口化(Hook Call架构基础)1. SAPI接口PHP的SAPI层实现上层接口的封装,使得PHP可以用在很多种模式场景下(例如apache、ningx、cgi、fastcgi、cli),以以cli SAPI为例子学习PHP解释器引擎是...转载 2019-04-25 19:43:42 · 403 阅读 · 0 评论 -
PHP扩展编写、PHP扩展调试、VLD源码分析、基于嵌入式Embed SAPI实现opcode查看
catalogue1. 编译PHP源码2. 扩展结构、优缺点3. 使用PHP原生扩展框架wizard ext_skel编写扩展4. 编译安装VLD5. Debug调试VLD6. VLD源码分析7. 嵌入式Embed SAPI编程1. 编译PHP源码wget http://cn2.php.net/distributions/php-5.5.31.tar....转载 2019-04-25 19:42:29 · 1255 阅读 · 0 评论 -
php 代码的编译
PHP是解析型高级语言,事实上从Zend内核的角度来看PHP就是一个普通的C程序,它有main函数,我们写的PHP代码是这个程序的输入,然后经过内核的处理输出结果,内核将PHP代码"翻译"为C程序可识别的过程就是PHP的编译。C程序在编译时将一行行代码编译为机器码,每一个操作都认为是一条机器指令,这些指令写入到编译后的二进制程序中,执行的时候将二进制程序load进相应的内存区域(常量区、数据区...转载 2019-04-25 19:12:36 · 667 阅读 · 0 评论 -
PHP - pcntl_fork() 执行过程详解
<?php $pid = pcntl_fork();if ($pid == -1){ die("could not fork");}elseif($pid == 0){ echo "I'm the childprocess\n";}else{ echo "I'm the parentprocess\n"; exit;}要...转载 2019-04-21 11:45:15 · 433 阅读 · 0 评论 -
Yii2的异步多线程服务之swoole
在使用yii2做网站开发时,是鉴于它上手速度快,拥有强大的组件和丰富的类库。以前做过些Android系统层、APP、流媒体等,而在接触yii2后发现,这个的开发速度确实快,虽然是个做网站的PHP框架,没有可比性,不过看了很多博客对比过yii2、laravel、phalcon,yii2的开发速度比后几个能提升几个等级。(话说以后有时间体验下后面两个,看是不是真的~)废话不多说,进入正题。做网转载 2017-03-31 17:35:34 · 2463 阅读 · 1 评论 -
学习swoole的心得
什么是swooleswoole是PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。Swoole可以广泛应用于互转载 2017-03-31 19:06:30 · 1344 阅读 · 0 评论 -
PHP常见的设计模式及其应用
本文主要讨论下Web开发中,准确而言,是PHP开发中的相关的设计模式及其应用。有经验的开发者肯定对于设计模式非常熟悉,但是本文主要是针对那些初级的开发者。首先我们要搞清楚到底什么是设计模式,设计模式并不是一种用来解释的模式,它们并不是像链表那样的常见的数据结构,也不是某种特殊的应用或者框架设计。事实上,设计模式的解释如下:descriptions of communicating ob转载 2017-03-03 21:14:31 · 397 阅读 · 0 评论 -
PHP 7 的五大新特性
如果你使用的是基于 composer 和 PSR-4 的框架,这种写法是否能成功的加载类文件?其实是可以的,composer 注册的自动加载方法是在类被调用的时候根据类的命名空间去查找位置,这种写法对其没有影响。作者:来源:linux.cn|2015-10-26 09:04 收藏 分享1. 运算符(NULL 合并运算符)把这个放在第一个转载 2017-03-03 22:01:40 · 217 阅读 · 0 评论 -
YII2的乐观锁和悲观锁
乐观锁与悲观锁¶Web应用往往面临多用户环境,这种情况下的并发写入控制, 几乎成为每个开发人员都必须掌握的一项技能。在并发环境下,有可能会出现脏读(Dirty Read)、不可重复读(Unrepeatable Read)、 幻读(Phantom Read)、更新丢失(Lost update)等情况。具体的表现可以自行搜索。为了应对这些问题,主流数据库都提供了锁机制,并引入了转载 2017-02-24 18:49:17 · 1946 阅读 · 0 评论 -
PHP 生成短网址
PHP 生成短网址原理:1.将原网址做crc32校验,得到校验码。2.使用sprintf('%u') 将校验码转为无符号数字。3.对无符号数字进行求余62操作(大小写字母+数字等于62位),得到余数后映射到62个字符中,将映射后的字符保存。(例如余数是10,则映射的字符是A,0-9对应0-9,10-35对应A-Z,36-61对应a-z)4.循环操作,直到数值为0。转载 2017-02-17 16:31:37 · 1179 阅读 · 0 评论 -
php 字符串压缩方法比较
PHP 提供的字符串压缩方法有 1.gzcompress — Compress a stringThis function compress the given string using the ZLIB data format. 2.gzencode — Create a gzip compressed stringThis function re转载 2017-02-17 16:44:53 · 601 阅读 · 0 评论 -
composer安装YII2
安装 Yii2 高级版应用基础版可以看官方文档今天安装了YII2高级版应用 写下步骤 留个记号,以备查询!1. 你首先需要下载并运行 Composer-Setup.exe Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下命令即可安装 Yii2. 通过windows的’cmd’命令进入dos命令窗口,执行如下命令composer global require原创 2017-02-17 09:56:51 · 417 阅读 · 0 评论 -
Packagist 镜像使用方法
Packagist 镜像使用方法还没安装 Composer 吗?请往下看如何安装 Composer 。镜像用法有两种方式启用本镜像服务:系统全局配置: 即将配置信息添加到 Composer 的全局配置文件 config.json 中。见“方法一”单个项目配置: 将配置信息添加到某个项目的 composer.json 文件中。见“方法二”方法一:转载 2017-02-17 15:43:27 · 1131 阅读 · 0 评论 -
PHP下的命令行执行
以下是 PHP 二进制文件(即 php.exe 程序)提供的命令行模式的选项参数,您随时可以通过 PHP -h 命令来查询这些参数。Usage: php [options] [-f] <file> [args...] php [options] -r <code> [args...] php [options] [-- args...] -s转载 2017-02-17 15:33:48 · 2626 阅读 · 0 评论 -
58到家数据库30条军规解读-1
军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释 解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的转载 2017-02-17 11:36:22 · 258 阅读 · 0 评论 -
抽象类和接口的区别以及使用场景
1. 相同点两者都是抽象类,都不能实例化。interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。2. 不同点interface需要实现,要用implements,而abstract class需要继承,要用extends。一个类可以实现多个interface,但一个类只能继承一个abstract class。转载 2017-03-08 17:07:52 · 289 阅读 · 0 评论 -
composer install与composer update的区别
1.composer installinstall 命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下。php composer.phar install 如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。如果没转载 2017-02-17 15:20:27 · 566 阅读 · 0 评论 -
PHP开发规范集成工具安装配置
PHP开发规范集成工具安装配置1、PHP安装phpmd、pdepend和codesniffera. 分别下载最新的phar包:PHP Depend,PHPMD,phpcpd到你本机的PHP目录。b. 分别创建(或修改)bat文件pdepend.bat, phpcpd.bat 和 phpmd.bat 文件。内容类似:@echo offif "%PHPBIN%" ==原创 2017-02-18 15:27:46 · 1181 阅读 · 0 评论 -
PHP代码规范
编码规范1、使用Yii2 核心框架代码规范* 文件必须使用 <?php 或 <?= 标签。* 文件未尾应该有一个新行。* PHP代码文件必须只能使用无BOM的UTF-8。* 代码缩进必须使用4个空格,而不是tab按键。* 类名必须使用大驼峰式(首字母大写)声明。* 类中常量必须使用全大写带下划线方式声明。* 方法名称必须使用小驼峰式(首字母小写)声明 。* 属性名称必须使原创 2017-02-18 15:08:37 · 509 阅读 · 0 评论 -
linux下用phpize给PHP动态添加扩展
使用php的常见问题是:编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,别说,php还真有这样的功能。 我没有在手册中看到。 如我想增加bcmath支持,这是一个支持大整数计算的扩展。windows自带而且内置,linux“本类函数仅在 PHP 编译时配置了 --enable-bcmath 时可用”(引号内是手册中的转载 2017-03-31 11:25:21 · 554 阅读 · 0 评论 -
分布式任务分发框架Gearman教程和PHP实现实例
1、Gearman介绍和使用场景Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相 比,Gearman更偏向于任务分发功能。它的任务分布非常简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片 resize功能,由于图片resize需要消耗大量计算资源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。转载 2017-03-26 21:42:57 · 377 阅读 · 0 评论 -
Yii2.0 rules验证规则大全
required : 必须值验证属性[['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; #说明:CRequiredValidator 的别名, 确保了特性不为空. email : 邮箱验证['email', 'email']; #说明:CEmailValidator的别名,确保了特性的值是一个有效的电邮地址.转载 2017-03-29 11:40:57 · 810 阅读 · 1 评论