php
文章平均质量分 90
mijar2016
一位三流学校毕业的学生,敲着四流的代码,为了希望而努力,为了明天而坚持。
展开
-
PHP源码分析 - PHP-FPM运行模式详解
前篇文章已经介绍PHP-FPM的运行原理。本文将细说PHP-FPM的运行模式。实际上,在上一篇文章简单提到过FPM运行模式,之所以把这块内容拉出单独讲解,笔者认为它是一个值得学习及借鉴的地方。FPM支持static、ondemand、dynamic三种运行模式。我们可以通过修改php-fpm.conf配置文件中的pm参数进行设置.static模式static:又称静态模式,该模式比较容易理解,即启动原创 2016-11-30 10:42:27 · 1849 阅读 · 0 评论 -
PHP - FPM信号机制
熟悉PHP-FPM的童鞋应该都知道它采用master/worker多进程架构设计,我们可以通过执行"xxx/sbin/php-fpm stop"或"xxx/sbin/php-fpm reload"停止或重新加载fpm。那么它究竟是怎样运作呢?简单来说,其运用了信号机制来实现相应的功能。当我们执行"stop"命令时,系统向fpm进程发送停止信号,当我们执行"reload"命令时,系统向fpm进程发送SIGUSR原创 2017-01-06 20:50:32 · 2170 阅读 · 0 评论 -
PHP - 内存管理
前面几篇文章主要介绍PHP-FPM,沿着”FPM运行原理->运行模式->进程管理->定时事件”方向,我们对FPM已经有了一个较为深刻的认识。今天这篇文章将介绍PHP的另一核心功能,内存管理。很多开源软件都有一套自己维护的内存管理体系,例如,nginx。php作为世界上“最好”的语言,当然也不例外。PHP内存管理功能,简单来说,就是申请一块大的内存来管理自己的内存结构;代码非常之精巧,其使用“内存对齐原创 2016-12-25 15:24:53 · 812 阅读 · 0 评论 -
PHP-max_execution_time与fpm.request_terminate_timeout介绍
前段时间一位同事跟我说php脚本超时时间以fpm配置优先。经过自己测试后,其实不然,上面的观点只是在某些情况下成立。php脚本超时时间可以在php.ini的max_execution_time和fpm.conf的request_terminate_timeout参数两处进行设置.那么这两者有什么区别呢?当我们设置php.ini的max_execution_time参数后,zend引擎处理脚本时,其内原创 2016-12-17 17:30:53 · 7758 阅读 · 1 评论 -
PHP - 垃圾回收机制
关于PHP垃圾回收机制(简称GC),网上已经有很多相关资料。之所以决定写这篇文章,主要是为了加深自己对PHP垃圾回收机制的理解。当然,如果能帮助到其他人理解,也不失为一件快事。 PHP5.3及以上版本使用了新垃圾回收机制。我们可以通过修改php.ini配置开启或关闭GC机制(默认是打开状态)。zend.enable_gc = OnGC数据结构typedef struct _gc_root_buff原创 2016-12-31 21:33:09 · 730 阅读 · 0 评论 -
PHP源码分析 - PHP-FPM运行原理
其实很早之前就有想过阅读PHP源码,主要还是自己比较懒散,意志不够坚定,一直无法静下心。最近不是很忙,趁着“短暂”的闲暇之余,翻看尘封已久的“PHP源码”文件。我们知道web服务器与PHP应用之间通过SAPI接口进行交互数据。PHP提供了多种SAPI接口,例如 apache2hander、fastcgi、cli等等。当然,php-fpm也是其中一种。相比其他结构,php-fpm运用更加广泛,这原创 2016-11-23 21:11:15 · 14627 阅读 · 4 评论 -
PHP源码分析 - PHP-FPM定时事件
PHP-FPM分别使用IO和定时两种事件来保证系统流畅的运转。IO事件负责收集客户端请求、主进程及子进程信号等操作。定时事件负责辅助型任务的处理,其内部定义fpm_pctl_perform_idle_server_maintenance_heartbeat 和 fpm_pctl_heartbeat两个定时事件,fpm_pctl_perform_idle_server_maintenance_hea原创 2016-12-07 11:57:16 · 1149 阅读 · 0 评论 -
PHP源码分析 - PHP-FPM scoreboard模块介绍
fpm_scoreboard(以下简称scoreboard模块)是PHP-FPM核心功能之一,源码位于sapi/fpm/fpm_scoreboard.c。从字面意思理解是一个”记分器”,也就是说它是一个类似统计功能的模块。网上关于这方面的资料较少,经过不断地反复阅读以及推敲,脑海中已经有了一个比较清晰的轮廓。scoreboard模块定义fpm_scoreboard_s和fpm_scoreboard_原创 2016-11-30 21:56:39 · 2531 阅读 · 0 评论 -
CodeIgniter-&引发关于变量引用的思考
CodeIgniter是一个单例模式框架,源代码中大量使用‘&’引用,有两种原因:一方面基于兼容PHP4版本;另一方面是为了防止变量发生”写时复制”(copy on write)。借此机会,简单地介绍“PHP变量引用”原理。PHP源码使用zval结构定义变量:typedef struct _zval_struct zval;struct _zval_struct { zvalue_valu原创 2016-11-19 10:43:41 · 511 阅读 · 0 评论 -
PHP - 类自动加载机制
PHP类自动加载机制被广泛运用到各个PHP框架中,在面向对象开发中,使用一套自动加载机制来管理我们的类库将会非常方便,从而减少使用前逐个引入包文件的痛苦。PHP提供了两种注册自动加载的方式:__autoload 和 spl_autoload_register。下面将介绍这两个函数在PHP的实现。__autoload 当我们在PHP脚本定义__autoload函数时,PHP在编译阶段调用zend_d原创 2017-01-15 10:58:36 · 726 阅读 · 0 评论