PHP7

新特性 标量类型声明 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。它们扩充了PHP5中引入的其他类型:类名,接口,数组和 回调类型 返回值类型声明 类似于参数类型声明,返回类型声明指明了函数返回值的类型 null合并运算符 考虑到日常使用到大量三元表达式和isset()的情况,添加了null合并运算符??这个语法糖。如果变量存在且值不为NULL, 它就会返回自身的值,否则返回它的第二个操作数 太空船操作符(组合比较符) <=>用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1 通过define()定义常量数组 Array 类型的常量现在可以通过define() 来定义。在PHP5.6中仅能通过const定义 匿名类 现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 高性能 PHP7是一个比较底层升级,比起PHP5的变化比较大,通过减少内存分配次数,多使用栈内存,缓存数组hash值,字符串解析成参数改为宏展开,使用大块连续内存代替小块碎片内存等等,使得性能有很大提升,具体就性能优化层面,大致可以汇总如下: ...

2017年12月16日 · 2 分钟 · Bug1024

PHP线程安全

简述 全局变量为各线程共享,不同的线程引用同一地址空间,如果一个线程修改了全局变量就会影响所有的线程,所以线程安全是指多线程环境下如何安全的获取公共资源。 PHP的SAPI多数是单线程环境,比如cli、fpm、cgi,每个进程只启动一个主线程,这种模式下是不存在线程安全问题的,但是也有多线程的环境,比如Apache,或用户自己嵌入PHP实现的环境,这种情况下就需要考虑线程安全的问题了,因为PHP中有很多全局变量,比如最常见的:EG、CG,如果多个线程共享同一个变量将会冲突,所以PHP为多线程的应用模型提供了一个安全机制:Zend线程安全(Zend Thread Safe, ZTS) ...

2017年6月7日 · 2 分钟 · Bug1024

FPM

FPM(FastCGI Process Manager)是PHP FastCGI运行模式的一个进程管理器,从它的定义可以看出,FPM的核心功能是进程管理。FastCGI是Web服务器(如:Nginx、Apache)和处理程序之间的一种通信协议,它是与Http类似的一种应用层通信协议,注意:它只是一种协议! ...

2017年6月4日 · 4 分钟 · Bug1024

PHP扩展开发

PHP生命周期 模块初始化阶段 注册常量 注册核心php.ini 注册GET、POST等全局变量 注册内部核心扩展 根据php.ini注册加载其他扩展 调用扩展的PHP_MINIT() 请求初始化阶段 初始化编译器 初始化EG、全局符号表、include file数组、词法分析器 初始化SG 调用扩展的PHP_RINIT() 脚本执行阶段 编译opcode 执行zvm 请求关闭阶段 调用register_shutdown_fucntion() 清理EG 销毁全局变量PG 调用扩展的PHP_RSHUTDOWN() 关闭编译器、执行器、内存管理器 模块关闭阶段 调用扩展的PHP_MSHUTDOWN() 清理ini HashTable元素 关闭output 释放PG 内核基础-变量 变量存储结构 ...

2017年5月27日 · 5 分钟 · Bug1024

PHP中的json_decode

判断一个字符串是否是合法的json串通常有以下两种方式 // 不推荐使用 function isValidJson($json) { return is_null(json_decode($json)); } // 推荐使用 function isValidJson($json) { json_decode($json); return json_last_error() === JSON_ERROR_NONE; } 但是无意中发现直接json_decode一个数字123或者一个字符串"abc"也是可以的 ...

2017年3月15日 · 1 分钟 · Bug1024