发布于2026-07-05 阅读(0)
扫一扫,手机访问
只需确保PHP≥8.0、Swoole≥5.0且扩展已启用,创建server.php并运行php server.php,浏览器访问http://127.0.0.1:9501即可看到“Hello from Swoole HTTP Server!”响应。

想用Swoole快速搭建一个能被浏览器访问的HTTP服务器?其实简单到超乎想象:不需要框架、不依赖Nginx、也不用配什么路由——你只需要确保PHP已经装好了Swoole扩展,然后写一个文件,执行一条命令,打开浏览器就能看到响应内容。
先检查一下扩展是否就绪。在终端里敲 php -m | grep swoole,如果输出里出现了 swoole,说明环境没问题;如果没有任何输出,那就得先安装一下——比如用 pecl install swoole,或者直接用Docker镜像里自带的版本。
这里有个硬性要求:PHP版本必须≥8.0,且Swoole版本必须≥5.0。低于这个版本的话,SwooleHttpServer 的一些关键方法可能用不了,到时候出问题排查起来反而更麻烦。
新建一个 server.php 文件,把下面这段代码复制进去:
$server = new SwooleHttpServer("127.0.0.1", 9501);
$server->on("request", function ($request, $response) {
$response->header("Content-Type", "text/plain; charset=utf-8");
$response->end("Hello from Swoole HTTP Server!n");
$server->start();
注意,这一行 $response->end() 是必须的,漏掉的话客户端会一直挂起等待,连接就不会正常关闭。这不是锦上添花,而是协议层面的硬性要求,一定要写。
启动很简单:在 server.php 所在目录运行 php server.php,终端会停留不动,说明已经启动成功。然后新开一个终端窗口,用 curl http://127.0.0.1:9501 测试一下——如果看到 Hello from Swoole HTTP Server! 就说明通了。浏览器访问同一个地址,页面也会显示同样的文本。
要停止服务,按 Ctrl+C 即可。千万别用 kill -9 强杀主进程,否则残留的监听端口可能会阻塞下次启动,到时候还得手动清理,很麻烦。
如果想让服务器返回更丰富的页面,有三种常见做法:
第一种:直接改 end() 的内容为 HTML 字符串
$response->end("✅ 已接入 Swoole
当前时间:" . date('Y-m-d H:i:s') . "
");
第二种:设置更规范的响应头,避免中文乱码或样式失效
$response->header("Content-Type", "text/html; charset=utf-8"); 这句必须放在 end() 之前,否则浏览器无法正确解析编码。
第三种:返回 JSON 接口,适合前后端分离调试
$response->header("Content-Type", "application/json; charset=utf-8");
$response->end(json_encode(["msg" => "success", "timestamp" => time()], JSON_UNESCAPED_UNICODE));
这三种方法可以根据实际场景灵活选用,核心逻辑不变——只要守住 end() 这条红线,其他都是锦上添花。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8