php实现 httpserver
PHP 实现 HTTP Server
PHP 可以通过内置的 php -S 命令快速启动一个简单的 HTTP 服务器,适用于开发测试环境。以下是实现方法和注意事项:
启动内置 HTTP 服务器
使用命令行运行以下命令,启动一个监听本地 8000 端口的 HTTP 服务器:
php -S localhost:8000
指定根目录启动服务器(例如 public 目录):
php -S localhost:8000 -t public
自定义 HTTP Server
如果需要更复杂的逻辑,可以通过 PHP 的 Socket 扩展实现自定义 HTTP 服务器:
<?php
$host = '127.0.0.1';
$port = 8000;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $host, $port);
socket_listen($socket);
echo "Server running on http://{$host}:{$port}\n";
while (true) {
$client = socket_accept($socket);
$request = socket_read($client, 1024);
$response = "HTTP/1.1 200 OK\r\n";
$response .= "Content-Type: text/html\r\n\r\n";
$response .= "<h1>Hello from PHP HTTP Server</h1>";
socket_write($client, $response, strlen($response));
socket_close($client);
}
使用 ReactPHP 框架
对于生产级需求,可以使用 ReactPHP 实现高性能 HTTP 服务器:
安装 ReactPHP:
composer require react/http
示例代码:
<?php
require __DIR__ . '/vendor/autoload.php';
$server = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
return React\Http\Message\Response::plaintext(
"Hello World!\n"
);
});
$socket = new React\Socket\SocketServer('127.0.0.1:8000');
$server->listen($socket);
echo "Server running at http://127.0.0.1:8000" . PHP_EOL;
注意事项
- 内置服务器仅适用于开发环境,不推荐用于生产环境
- 自定义 Socket 实现需要处理完整的 HTTP 协议
- 生产环境建议使用 Nginx/Apache 配合 PHP-FPM
- ReactPHP 等异步框架适合高性能场景







