PHP + Nginx 部署模式总览
在生产环境部署 PHP 应用时,Nginx 与 PHP-FPM(FastCGI Process Manager)的组合是最主流的方案。PHP-FPM 自 PHP 5.3.3 起就已经合并进 PHP 核心代码库(源码位于 sapi/fpm/),通过 FastCGI 协议与 Web 服务器通信,负责管理 worker 进程池来执行 PHP 脚本。
在生产环境部署 PHP 应用时,Nginx 与 PHP-FPM(FastCGI Process Manager)的组合是最主流的方案。PHP-FPM 自 PHP 5.3.3 起就已经合并进 PHP 核心代码库(源码位于 sapi/fpm/),通过 FastCGI 协议与 Web 服务器通信,负责管理 worker 进程池来执行 PHP 脚本。
PHP 与 Go 的结合并不少见,但在工程实践中,最常见的合作形态并不是「把 PHP 代码改写成 Go」,而是让 Go 接管网络层与进程管理,让 PHP 专注于业务逻辑。RoadRunner 正是这种思路的代表性项目:它用 Go 写了一个高性能的应用服务器(application server),把 PHP 进程作为长驻 worker(常驻工作进程)调度起来,从而绕开了传统 PHP-FPM 在每个请求上重复引导框架的开销。
ptrace(2) 是 Linux(以及多数现代 Unix)提供的一个系统调用,允许一个进程(tracer,跟踪者)观察、控制另一个进程(tracee,被跟踪者)的执行,并读写其内存与寄存器。它是 strace、gdb 等工具的底层基石(perf trace 走的是 perf_event_open tracepoint 路径,刻意避开 ptrace 的高开销),也是反调试、沙箱、热补丁等技术的实现入口。本文整理其工作模型、常用 request 与典型示例。
从下载列表 Python 3.10.0 可以看出,Installer 版本的安装文件大小比 Embeddable 版本大很多:
Python 生态里有不少成熟的 Web 框架,各自针对不同的场景做了取舍。本文按"大而全 / 微框架 / 高性能异步"三类,记录我在调研与使用过程中沉淀的几款主流框架要点,以及若干实操链接。
dataclasses 是 Python 3.7 起进入标准库的一个模块,由 PEP 557 引入,作者是 Eric V. Smith。它的核心目标是:为「主要用来存储数据的类」自动生成 __init__、__repr__、__eq__ 等样板方法(boilerplate),让开发者把精力放在字段定义上而不是重复的 def __init__(self, ...)。
「可视化调试」在 Python 语境下有两层含义:一是用图形界面(GUI)的调试器,在断点处查看变量、调用栈与求值表达式;二是把程序的执行过程可视化,用时间线、火焰图等呈现函数调用顺序与耗时。前者解决「程序为什么是这个状态」,后者解决「程序究竟是怎么跑的」。本文介绍三种常用方案。