PHP内存管理
2021-08-27 16:24:58 PHP 浏览184
一、变量自动GC1、在函数中定义变量时,分配一块内存用于保存zval以及对应的value结构,在函数返回时再将内存释放,如果在函数执行期间该变量作为参数调用了其他函数或者赋值给了其他变量,则把变量赋值赋值一份,变量之间相互独立不会冲突。这种方法会带来深拷贝的问题,内存浪费,基于此,当变量赋值时、传递时不进行深拷贝,而是多个变量公用一个value,引用计数来记录value有多少个变量在使用,当某个变量改变时无法继续与其他变量公用value,这个时候进行深拷贝分离value,这就是写时复制。二、引用计数引用计数用来记录当前有多少个zval指向同一个z ...
深入理解PHP变量
2021-08-27 14:59:46 PHP 浏览191
变量由三部分组成,变量名,变量值,变量类型,变量名与变量值可简单与zval 和zend_value对应。变量内存通过引用计数和写实复制管理,7引用计数转移到具体value结构中不再是zval,变量之间的传递,赋值通常也针对zend_value。$a; $b = 1;以上代码执行时会分配两个zval,$a没有值 相当于unset()了。一、    PHP通过zval结构体表示一个变量,不同类型的变量值通 ...
深入理解SAPI之FPM
2021-08-27 14:29:20 PHP 浏览165
PHP处理HTTP请求涉及网络处理、需求接受,请求解析,处理完成后返回,实现了FastCGI协议。web服务器处理网络请求将解析的结果通过FastCGI协议转发给处理程序,处理程序完成后将结果返回。Fpm就是PHP FastCGI运行模式的进行管理器。网络处理模型:    1、多进程模型:由一个主进程负责管理子进程,基本网络事件由各个子进程处理,nginx    2、多线程模型:主线程负责管理子线程,子线程监听,接受处理请求。&nbs ...
PHP的构成
2021-08-27 13:54:02 PHP 浏览192
PHP由SAPI,main,Zend,ext组成。一、SAPI1、PHP是一个脚本解析器,提供脚本的解析与执行,它的输入是普通文本,然后由PHP解析器按照预先定义好的语法规则进行解析执行。SAPI提供在不同环境中应用这个解析器,命令行,Web等。SAPI视为PHP的宿主环境,为PHP框架的最外层,负责PHP框架初始化。经常用到的SAPI是FPM和cli.2、ZendVM介于PHP应用和实际计算机中间,我们编写PHP代码被它执行,是PHP的核心实现,包括编译器、执行器,编译器负责将PHP代码解释为为执行器可识别的指令,执行器负责执行编 ...
PHP7的变化
2021-08-27 11:11:30 PHP 浏览200
PHP7内核 尤其Zend引擎变化很大,使PHP运行速度比PHP5.0/PHP5.6快了近5倍,还降低了对系统的资源占用。一、抽象语法树7以前PHP代码在语法解析阶段直接生产ZendVM,7首先将PHP代码解析生成抽象语法树,然后将抽象语法树编译成ZendVM指令,将编译与执行隔离,编译不需要关心执行的规则,执行不需要关系编译的规则。二、Native TLS7使用Native TLS保存线程池资源,通过__thread标识一个全局变量,这样全局变量变成线程独享,不同线程修改不会相互影响。线程安全三、指定函数参数,返回值 ...
PDO
2021-08-26 16:48:51 PHP 浏览184
PHP数据对象(PDO)扩展为PHP访问数据库定义了一个轻量级的一致接口,实现PDO标准的数据驱动可以公开具体数据库特性作为标准的扩展功能,PDO + 一个具体数据库PDO驱动的访问DB. 常用的Pdo_mysql.特性:1、原生C扩展;2、利用PHP5的内部特性;3、采用缓冲方式读取结果集中的数据;4、PDO提供了通用的数据库特性作为基础;5、PDO能访问数据库特定的功能;6、PDO可以使用事务7、PDO可以和数据库的LOBG(大数据)交互;8、PDO可以使用绑 ...