PHPの概念

43次阅读

共计 819 个字符,预计需要花费 3 分钟才能阅读完成。

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 底层的运行机制与原理

正文完
 0