对于 PHP FPM,每段代码都是单独执行的,结果(该过程的输出)通过管道传回客户端。因此,每当我们想停止处理时,我们只需触发exit()
.
但是,使用Swoole时,服务器应该一直运行。当然,可以使用 Swoole\Process::exit()停止进程- 但通常由控制器触发立即发送响应。例如:
$server = new Swoole\HTTP\Server("127.0.0.1", 9501);
$server->on("start", function (Swoole\Http\Server $server) {
echo "Swoole http server is started at http://127.0.0.1:9501\n";
});
$server->on("request", function (Swoole\Http\Request $request, Swoole\Http\Response $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
});
$server->start();
在这种情况下,$response->end
该方法与 PHP FPM 世界中的功能基本相同exit()
。请注意,这与 Node 世界中发生的情况非常相似:服务器应该一直在运行,而控制器(处理每个单独请求的函数)决定是否停止处理单独的请求并返回响应,包括标头和身体。