php
写回
这个作者很懒,什么都没留下…
展开
-
看我如何玩转PHP代码加密与解密
参考文献:https://xz.aliyun.com/t/2403前言两次比赛,两个题目,两种方式,两个程序。一切PHP的代码终究是要到Zend Engine上走一走的,因此一切PHP的源码加密都是可以被解密的。(不包括OpCode混淆-VMP)代码混淆比较恶心人的一种处理方式,也不太算是加密。单独拿出来是为了说明代码混淆和代码加密是两种方式。本质是是对变量进行乱七...转载 2019-08-20 10:43:13 · 2119 阅读 · 0 评论 -
完整的从github上拉Laravel项目流程
先来看一看了: https://mobile.yangkeduo.com/mall_page.html?mall_id=129221094.Github鼎鼎大名相信大家都知道。那么今天我们一起来学习一下如何使用Git Clone命令来将已有的Laravel项目迁移(复制)到新的开发环境。首先在原始项目文件夹(假设我们的分支是master),我们把所有的更改commit后push到远端(...转载 2018-12-11 10:32:27 · 1541 阅读 · 0 评论 -
php 的 opcache 和最近的 php jit 有什么区别?
源代码(人认识)->字节码(解释器认识)->机器码(硬件认识)来看下PHP的执行流程,假设有个a.php文件,不启用opacache的流程如下:a.php->经过zend编译->opcode->PHP解释器->机器码启用opacache的流程如下a.php->查找opacache缓存,如果没有则进行zend编译为opcode并缓存->opacod...转载 2018-12-17 10:01:35 · 728 阅读 · 0 评论 -
YII框架之模块,事件,行为,依赖注入容器,服务定位器
本篇内容中有以下问题待研究:依赖注入容器中的 Setter 和属性注入 以及 PHP 回调注入 的应用场景 然后行为,事件,依赖注入容器等实现的原理是什么? 事件 on的第三参数有什么用? 自动更新时间戳的行为TimestampBehavior是什么原理?模块可以通过 r=gii%2Fdefault%2Fview&id=module 来生成Module Class:ap...转载 2018-12-13 10:36:48 · 362 阅读 · 0 评论 -
Laravel 5.6 中优雅的管理 swoole 进程
php artisan make:command SwooleManger //默认在app/Console/Commans目录下创建SwooleManger.php文件。 <?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Sup...转载 2018-12-06 14:04:55 · 786 阅读 · 0 评论 -
PHP闭包(Closure)初探
不知不觉发现PHP已经出到了5.5版本,而自己一直在用PHP5.2,让我看起来像深山出来的小伙子一样,又土又落后。在我习惯在javascript中使用闭包之后,忽然间对PHP的闭包打起了兴趣。于是乎在网上下了个WAMP集成开发环境,是PHP5.3版本的(PHP5.3开始引入了闭包的特性),不得不说WAMP安装使用真的很方便。简单配置了一下,开始动手。 匿名函数提到闭包就不得不想起匿...转载 2018-12-03 17:20:10 · 103 阅读 · 0 评论 -
php 垃圾回收机制
php 垃圾定义是否有变量名指向变量容器zval,如果没有则认为是垃圾,需要释放。 判断是否为垃圾php5.3 前 refcount = 0 才认为是垃圾产生内存泄漏主要真凶:环形引用 <?php $a = ['one']; $a[] = &$a; xdebug_debug_zval('a');这样 $a数组就有了两个元素,一个索引为0,值为one字符...原创 2018-12-12 17:26:45 · 787 阅读 · 0 评论 -
PHP 高级编程之多线程
PHP 高级编程之多线程http://netkiller.github.io/journal/php.thread.html目录1. 多线程环境安装 1.1. PHP 5.5.9 1.2. 安装 pthreads 扩展 2. Thread 3. Worker 与 Stackable 4. 互斥锁 4.1. 多线程与共享内存 5. 线程同步 6. 线程池 6....转载 2018-12-03 14:44:07 · 384 阅读 · 0 评论 -
php用redis做session共享
yum install -y php-redis;然后/etc/php.ini里改:session.save_handler = redissession.save_path = "tcp://127.0.0.1:6379"service httpd restart参考文献:https://blog.csdn.net/junqing124/article/details/54...转载 2018-12-01 01:13:17 · 218 阅读 · 0 评论 -
PHP多态的理解
php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态。php理应具有这三大特性。 封装是类的构建过程,php具有;php也具有继承的特性。唯独这个多态,php体现的十分模糊。原因是php是弱类型语言。 java的多态体现的十分清晰,大体分两类:父类引用指向子类对象;接口引用指向实现接口的类对象。java声明变量时都要给变量设定类型,所以存在什么父类引用...转载 2018-11-30 15:15:23 · 293 阅读 · 0 评论 -
php 手册
php 笔记https://www.kancloud.cn/xiak/php-node/504497swoole手册https://www.kancloud.cn/fage/swoole_extension/691318swoole入门手册https://www.kancloud.cn/thinkphp/swoole-doc/42080Chrome 开发者工具https...原创 2018-11-26 17:35:03 · 238 阅读 · 0 评论 -
php调用kill命令平滑重启nginx_PHP教程
摘要:1,php文件 代码示例:<?phppassthru(escapeshellcmd(“sudokill-HUP`cat/usr/local/nginx/nginx.pid`”));//nginx平滑重启?>2,root权限登陆centos,执行visudo,最好用visudo编辑,不容易出现莫名其妙的预防错误。在打开的sudo文件末尾加入以下一行:wwwALL=(root)NOP...转载 2018-11-29 16:04:59 · 710 阅读 · 0 评论 -
php 各种框架优缺点
一直以来,phper讨论最多的就是php各种框架的优缺点,网上的资料也是比较零散,现把几款主流的框架收集汇总一下,其中本人只是用过Yii2、Laravel、Yaf、Thinkphp这四种框架,因此大部分对各种框架的评价皆来自与网上资料,如果问题,请在评论中指出,共同进步一、ThinkPHPThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP...转载 2018-11-24 23:33:29 · 407 阅读 · 0 评论 -
Laravel Migrations的migrate与rollback
php artisan make:migration create_admin_user_table <?phpuse Illuminate\Support\Facades\Schema;use Illuminate\Database\Schema\Blueprint;use Illuminate\Database\Migrations\Migration;class ...转载 2018-12-11 16:59:56 · 558 阅读 · 0 评论 -
vscode配置php开发环境
1.visual studio code 设置代理在CMD环境下设置代理可能不是很常用,但是某些情况下还是可能会用到,比如有些资源网站被墙了,此时你如果想访问这些资源时,只能通过代理来访问相应的资源,而你需要在CMD环境下下载墙外的资源时。当然,如果你使用某些代理软件为所有通讯设置了代理,那就不需要这些设置了。为CMD设置代理很简单,首先打开cmd然后输入如下命令:set http_prox...转载 2018-12-25 14:10:59 · 3728 阅读 · 0 评论 -
composer 全量源
"repositories": [ { "type": "composer", "url": "https://asset-packagist.org" }]转载 2019-01-28 15:34:27 · 174 阅读 · 0 评论 -
ansible php exec 乱码问题
$locale='en_US.UTF-8';setlocale(LC_ALL,$locale);putenv('LC_ALL='.$locale);转载 2019-03-26 18:10:38 · 323 阅读 · 0 评论 -
详解php中的implements 使用
php类中接口的应用关键字是interface、implements了,接口是一种成员属性全部为抽象或常量的特殊抽象类,implements主要是对类名,类所拥有的方法,以及所传参数起约束和规范做用,有点像 abstract 抽象类。类中接口的应用1.关键字:interface2.关键字:implements1.接口的介绍与创建接口:一种成员属性全部为抽象或常量的特殊抽象类。...转载 2019-03-07 11:30:43 · 657 阅读 · 0 评论 -
PHP面向对象----(interface区别abstract)
抽象类和接口的异同1. 相同点:(1)两者都是抽象类,都不能实例化。(2) interface 实现类及 abstract class 的子类都必须要实现已经声明的抽象方法。2.不同点:(1)interface 需要实现,要用 implements ,而 abstract class 需要继承,要用 extends 。(2)一个类可以实现多个 interface ,但一个类...转载 2019-03-07 11:11:46 · 103 阅读 · 0 评论 -
php 的yield叫协程,go的goroutine也叫协程,它这两种完全不一样吧?
在php等语言里的yield,不是协程语法,而是迭代器语法。而包括php在内的大多数语言实现迭代器的方式,是通过一个可中断的函数完成的。而协程的一个特点就是执行中断,切换上下文。所以就有了通过迭代器函数去实现协程的方案。这种方案充分利用了迭代器可中断的特点来模拟协程中断,而利用闭包函数的上下文独立性,实现协程的上下文切换。总结起来,什么是协程,协程是通过切换运行方法和上下文,来在同...转载 2019-03-08 17:02:48 · 692 阅读 · 0 评论 -
学习笔记之php的运行机制与原理
前言经常用php写cgi,但是发现自己并不理解它的运行原理,所以学习一下。PHP是什么PHP是一种适用于Web开发的动态语言,是一个用C语言实现,包含大量组件的软件框架。 多进程模型:PHP是多进程模型。不同请求间互不干涉,即一个请求挂掉不会对全盘服务造成影响。(使用进程控制函数,创建子进程,执行程序,处理信号等)。PHP也能支持多线程模型。 进程拥有一个完整的虚拟地址空...转载 2019-02-21 11:33:47 · 207 阅读 · 0 评论 -
php的zookeeper扩展安装及使用
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。要在php中使用zookeepe...转载 2019-02-26 16:28:11 · 445 阅读 · 0 评论 -
php编译安装与配置
php编译安装与配置===========================================官网:http://php.net/官网下载:http://php.net/downloads.php=========================================== 一:了解与准备 1.1:Apache(httpd) nginx 与 php 连接...转载 2019-02-26 14:50:07 · 399 阅读 · 0 评论 -
php configure参数及 安装扩展
进程通信方式:共享内存、消息队列、PHP对共享内存段的操作有两组函数:System V IPC和Shared Memory。 其中System V IPC由AT&T的贝尔实验室对早期的UNIX系统贡献而来,现在的linux系统都完美的继承了下来,该系列函数能够更方便的操作数据,无需像Shared Memory那样必须自己掌握读写时的偏移量、长度等,也不用序列化/反序列化来回转换(因为S...转载 2019-02-20 17:59:17 · 1800 阅读 · 0 评论 -
Ubuntu彻底删除PHP7.0
一、删除php的相关包及配置sudo apt-get autoremove php7*二、删除关联sudo find /etc -name "*php*" |xargs rm -rf 三、清除dept列表sudo apt purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`四、检查是否卸载干净(无返...转载 2019-02-20 15:50:05 · 214 阅读 · 0 评论 -
php 实现redis分布式锁
前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。 可靠性首先,为了确保分布式锁可用,我们至少要确...转载 2019-02-19 17:14:50 · 478 阅读 · 0 评论 -
对 PHP 后期静态绑定的理解
什么是后期静态绑定在看一些框架源码或者是某个项目的代码时,经常能看到后期静态绑定的用法。比如下面这段:public static function getInstance(){ if (is_null(static::$instance)) { static::$instance = new static; } return static::$...转载 2019-02-18 17:55:46 · 241 阅读 · 0 评论 -
PHP新的垃圾回收机制:Zend GC详解
概述 在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而在这种简单的GC实现方案中,出现了意想不到的变量内存泄漏情况(Bug:http://bugs.php...转载 2019-02-18 15:32:10 · 99 阅读 · 0 评论 -
php 共享内存
共享内存主要用于进程间通信 php中的共享内存有两套扩展可以实现1、shmop 编译时需要开启 --enable-shmop 参数实例: $shm_key = ftok(__FILE__, 't');/** 开辟一块共享内存 int $key , string $flags , int $mode , int $size $flags: a:访问只读内存段...转载 2019-02-18 14:50:26 · 155 阅读 · 0 评论 -
学习开发自己的 Composer 包,并使用 GitHub 实时更新到 Packagist
composer是什么Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的某个目录中(例如 vendor)进行安装。默认情况下它不会在全局安装任何东西。因此,这仅仅是一个依赖管理。Composer 受到了 node's npm 和 ruby's bundler 的强烈启发。而当时 PHP 下并没有类似...转载 2018-11-22 18:15:47 · 475 阅读 · 0 评论 -
yii2.0-rules验证规则应用实例
Rules验证规则: required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空.[['字段名1','字段名2'],required] //字段1 2 必填[['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息']; email : 邮箱验证||CEmail...转载 2018-11-19 09:59:20 · 292 阅读 · 1 评论 -
【Laravel】 常用的artisan命令【原创】
【Laravel】 常用的artisan命令【原创】2017年06月07日 11:09:59阅读数:9090全局篇 查看artisan命令 php artisan php artisan list 查看某个帮助命令 php artisan help make:model 查看laravel版本 php artisan --ver...转载 2018-08-17 11:55:53 · 1041 阅读 · 0 评论 -
PHP 输出缓存 Output Buffer
当 PHP 脚本有输出时,输出控制函数可以缓存输出(包括消息头和消息体),而不是立刻输出。 这在多种不同情况中非常有用,尤其是用来在脚本开始输出数据后,发送http头信息到浏览器。输出控制函数不影响由 header() 或 setcookie()发送的文件头信息,仅影响象 echo 这样的函数和PHP代码块间的数据。1. 缓冲区意义及用途1)消息头和消息体任何协议都必须在发送消息体之...转载 2018-08-16 17:02:32 · 562 阅读 · 0 评论 -
导出csv,excel等文件,文件内容错误的问题,需要加上ob_end_clean
eg:1.用phpexel 将exl 输出到文件$objWriter->save(__DIR__."/test1.xls");$objXLS->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);$objXLS->getActiveSheet()->getColumnDime...原创 2018-08-08 10:49:21 · 1057 阅读 · 0 评论 -
用php的ob_start来生成静态页面的方法分析
虽然方法很多,但使用起来简便容易的,我觉得还是先判断已经生成的首页文件的生成时间和现有时间之间的差值,如果满足某个值就开始生成,这种方法比较来得容易,不多说了,开始吧! 在开始之前还是提一下三个函数吧:"ob_start()、ob_end_clean()、ob_get_contents()" ob_start():是打开缓冲区的,就是要把您需要生成的静态文件的内容缓存在这里; ob_get_...转载 2018-08-08 10:32:30 · 692 阅读 · 0 评论 -
php中ob函数缓冲机制深入理解
下面就php中ob函数缓冲机制通过文字说明加代码分析的形式给大家展示如下:对于一个刚刚入门的php程序员来说,php缓冲区是几乎透明的。在他们心目中,一个echo print_r 函数,数据便会‘嗖'的一声飞到浏览器上,显示出来。我也一直如此单纯地认为。 其实,在技术的世界里,向来都是由简单到复杂,也许那些技术开发者开始单纯如你我,但是面对残酷的现实,不得不调整策略,以期提高机器运行效率,最后...转载 2018-08-08 10:29:08 · 556 阅读 · 0 评论 -
PHP 适配器模式
适配器模式(PHP实现) e.g.://目标角色1.接口拥有多个方法//源角色1.只拥有部分部分方法//适配器角色1.委派调用源角色已经存在的方法2.适配 增加客户端需要其他方法 //客户端1.设置静态方法2.实例化源角色3.通过构造方法将注入 适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口。适配器让...原创 2018-08-09 18:03:45 · 193 阅读 · 0 评论 -
php 非转发调用与转发调用
静态访问类的成员:1.非转发调用1)类名明确(A::funcA()) 2.转发调用 1)self:: 2)parent:: 3)static:: 4)forward_static_call() 5)get_called_class() 注意:“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类...原创 2018-08-09 17:48:57 · 994 阅读 · 0 评论 -
PHP 类的静态成员变量和普通成员变量对比
有很多人可能弄不清楚,在PHP中类的静态成员变量和普通成员变量有什么区别?1、类的静态方法只能访问静态成员变量,而不能访问非静态成员变量2、静态成员变量不需要实例化就能访问,且访问速度快一些3、类的静态成员变量只属于这个类,但类的所有实例共享这个静态成员变量 一个由 c/c++编译过的程序占用的内存分为一下几个部分(1)、栈区 stack : ...转载 2018-08-09 17:12:32 · 1363 阅读 · 0 评论 -
PHP中的Trait 特性及作用
自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。Traits 是一种为类似 PHP 的单继承语言而准备的代码复用机制。Trait 为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits 和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。Trait 和一个类相似,但仅仅旨在用...转载 2018-07-31 17:17:46 · 225 阅读 · 0 评论