PHP生命周期

1.请求/响应周期    1).表示层分析        程序启动->服务端处理请求->响应,返回客户端->程序结束    2).底层分析        MINT --> RINT--> PHP执行 --> RSHUTDOWN --> MSHUTDOWN        a.模块初始化阶段            PHP加载每个扩展的代码并调用其模块初始化,进行一些模块所需变量的申请,内存分配等        b.请求初始化阶段(进程-->读取,解析完请求数据之后)            PHP初始化本次请求执行脚本所需的环境变量。        c.PHP脚本执行阶段            PHP代码解析执行的过程(Zend引擎接管控制权,将php脚本代码编译成opcodes并顺次执行)        d.请求结束阶段            请求处理完后就进入了结束阶段,PHP就会启动清理程序(清除程序运行时产生的符号表,每个变量调用unset函数)        e.模块关闭阶段            资源的清理、php各模块的关闭操作

PHP垃圾回收
1.zval结构存储(type | value | refcount | is_ref)

1)type类型 value值  refcount引用次数 is_ref引用状态

2.gc_enable |gc_disable
3.gc_collect_cycles
PHP-FPM调优
1.etc/php-fpm.d/*.conf

pm.max_children = 100            //最大子进程数量【pm = static】pm.start_servers = 20            //启动时创建的子进程数pm.max_requests = 10240          //当一个php-cgi进程处理的请求数达到这个配置后,则会自动重启该进程request_terminate_timeout = 400  //单个请求的超时中止时间,超时后会终止进程,nginx发现信号断了,就会给客户端返回502错误pm.min_spare_servers = 10        //保证空闲进程数最小值,小于此值,则创建新的子进程pm.max_spare_servers = 30        //保证空闲进程数最大值,大于此值,此进行清理

参考PHP底层的运行机制与原理