PHP 如何真正工作:服务器端思维的简单指南

当你学习 Web 编程时,有一个重大的思维转换必须要做:

"当我访问一个网站时到底发生了什么?PHP 在这个过程中扮演什么角色?"

这篇文章是你理解 PHP 实际工作原理的白话指南——它在服务器上做什么,如何与浏览器连接,以及如何处理 Web 请求。

无论你是刚开始学习 PHP,还是之前使用过但不了解幕后机制,这都是你需要的服务器端思维。

大局观:当你访问网站时发生了什么?

想象你打开浏览器并访问:

https://example.com/profile.php

这是真正发生的过程:

  1. 浏览器向服务器发送 HTTP 请求
  2. 服务器查看 URL,发现应该运行 profile.php
  3. PHP 在服务器上执行——不是在浏览器中
  4. PHP 可能连接数据库、执行一些逻辑,然后生成 HTML
  5. 服务器将纯 HTML 发送回浏览器
  6. 浏览器为用户渲染 HTML

关键概念:PHP 在页面到达浏览器之前运行。你永远不会在浏览器的"查看源代码"中"看到"PHP 代码。

PHP 作为请求-响应机器

从本质上讲,PHP 就像一个请求处理器。每次用户访问页面时:

  • PHP 重新开始——每个请求都是隔离的
  • 它读取 URL、请求数据(GET、POST)、cookies、sessions 等
  • 它从上到下运行文件中的代码
  • 它将响应(通常是 HTML 或 JSON)发送回浏览器

没有"持续进程"或对上次请求的记忆——除非你明确使用 sessions、数据库或缓存。

PHP 中的请求生命周期

以下是基本 PHP 脚本的运行方式:

php
<?php
// profile.php

session_start(); // 初始化会话

$userId = $_GET['id'] ?? null;

if (!$userId) {
    echo "No user selected.";
    exit;
}

$db = new PDO(...); // 连接数据库
$stmt = $db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);
$user = $stmt->fetch();

if (!$user) {
    echo "User not found.";
    exit;
}

echo "<h1>Hello, " . htmlspecialchars($user['name']) . "</h1>";
?>

发生的过程:

  1. PHP 连接数据库
  2. 获取用户数据
  3. 生成 HTML 输出
  4. 输出被发送回浏览器

你不需要手动发送响应——任何你 echoprint 的内容都会成为浏览器看到的 HTML。

服务器在做什么(Apache、Nginx 等)

PHP 不是独自运行的——它由像 Apache 或 nginx 这样的 Web 服务器执行。

  1. Web 服务器接收浏览器的请求
  2. 它检查文件路径和规则(如 .htaccess
  3. 它将 .php 文件传递给 PHP 解释器(如 PHP-FPM)
  4. 解释器运行文件,然后将输出发送回服务器
  5. 服务器将结果转发给浏览器

把 Web 服务器想象成连接浏览器和 PHP 的中间人。

PHP 不在浏览器中运行

与 JavaScript 不同,PHP 从不在客户端运行。这就是为什么你不能做这样的事情:

javascript
setTimeout(function () {
  // 这在 PHP 中不会工作!
}, 1000)

如果你看到 .php 页面在显示后加载某些内容,那可能是使用了 AJAX——JavaScript 对服务器上的 PHP 端点进行额外调用。

PHP 文件只是模板(直到它们运行)

在执行之前,PHP 文件只是纯文本。它们存在于你的服务器上,如:

/var/www/html/index.php

但一旦请求被发出,PHP 运行文件并在发送后丢弃结果。这意味着:

  • 请求之间没有持久内存
  • 除非你编写,否则没有后台处理
  • 默认情况下每个请求都是无状态的

会话和状态怎么办?

PHP 可以使用会话在请求之间记住事情:

php
session_start();
$_SESSION['user_id'] = 123;

为什么理解这些很重要

一旦你"理解"PHP 如何在幕后工作:

  • 像 Laravel 或 Symfony 这样的框架更有意义了(它们自动化请求路由)
  • 你理解为什么 PHP 应用是无状态的
  • 你编写更清晰的代码,与 HTTP 的流程协作,而不是对抗它

总结:PHP 服务器端思维

  • PHP 在服务器上运行,不是在浏览器中
  • 每个请求重新开始——除非你管理状态,否则它是无状态的
  • PHP 脚本生成 HTML(或 JSON 等)并发送回去
  • 你的 PHP 代码每个请求运行一次,然后结束

如果你将思维从"编写页面"转换为"响应请求",你就走上了掌握服务器端编程的正确道路——不仅仅是 PHP。

CatchAdmin
后端开发工程师,前端入门选手,略知相关服务器知识,偏爱❤️ Laravel & Vue
本作品采用《CC 协议》,转载必须注明作者和本文链接