PHP http长连接的实现
HTTP 长连接实现原理
HTTP长连接(Keep-Alive)通过复用TCP连接减少重复握手开销。客户端请求头携带Connection: keep-alive,服务器响应同字段确认支持。PHP中需结合服务器配置与代码实现。
服务器配置调整
Apache中启用长连接需修改httpd.conf或虚拟主机配置:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
Nginx默认启用长连接,参数如下:
keepalive_timeout 60;
keepalive_requests 100;
PHP脚本实现方式
设置脚本执行时间与忽略客户端断开:
set_time_limit(0);
ignore_user_abort(true);
输出缓冲控制与手动刷新:
ob_start();
while (true) {
echo "data\n";
ob_flush();
flush();
sleep(1);
}
WebSocket替代方案
对于真正持久连接,建议使用WebSocket:

// Ratchet库实现示例
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
$server = IoServer::factory(
new HttpServer(new WsServer(new MyChat())),
8080
);
$server->run();
注意事项
长连接会占用服务器资源,需合理设置超时时间。负载均衡环境下可能需特殊配置,AWS等云服务有特定Keep-Alive要求。监控工具需调整以适应长连接场景。





