各位好,我是你们的 PHP 资深侦探。今天我们不聊怎么把代码写得更漂亮,也不聊怎么优化 SQL 查询,我们要聊的是那个躲在代码角落里、让人又爱又恨的家伙——全局变量。 特别是当我们的 PHP 跑在常驻内存模式下,比如 Swoole、OpenSwoole 或者 RoadRunner 的时候,这个家伙就变成了一只张着血盆大口的怪兽。今天,我就要带大家拆解一下,我们是如何通过 RequestContext(请求上下文) 来驯服这只怪兽的。 准备好你们的白板笔了吗?我们要开始解剖了。 第一幕:这是一个什么样的世界? 首先,我们要搞清楚背景。传统的 PHP 是怎么工作的? 传统 PHP: 每来一个 HTTP 请求,PHP 引擎启动,加载代码,跑完扔掉,引擎关闭。这就像是一群服务员(请求)去一家快餐店(Web 服务器),点完餐,吃完,拍拍屁股走人,服务员换一拨。快餐店里的桌子(变量)每天都在被擦干净,脏的、乱的,从来不会留到第二天。 常驻内存 PHP: 想象一下,这家快餐店变成了一家24小时营业的火锅店。服务员(请求)进进出出,但厨房(PHP 进程)是不关门的。炉火一直烧着,底料一直留着。 这时候 …