php pfsockopen 实现
使用 pfsockopen 实现持久化 Socket 连接
pfsockopen 是 PHP 中用于创建持久化网络连接的函数,与 fsockopen 类似,但连接在脚本结束后不会自动关闭,可被后续请求复用,适合高并发场景。

基本语法
pfsockopen(
string $hostname,
int $port = -1,
int &$error_code = null,
string &$error_message = null,
?float $timeout = null
): resource|false
实现步骤
连接服务器

$host = 'example.com';
$port = 80;
$timeout = 30;
$socket = pfsockopen($host, $port, $errno, $errstr, $timeout);
if (!$socket) {
die("Connection failed: $errno - $errstr");
}
发送 HTTP 请求示例
$request = "GET / HTTP/1.1\r\n";
$request .= "Host: $host\r\n";
$request .= "Connection: Keep-Alive\r\n\r\n";
fwrite($socket, $request);
读取响应
while (!feof($socket)) {
echo fgets($socket, 128);
}
注意事项
- 持久连接需服务器支持(如 HTTP 的
Keep-Alive) - 避免过多持久连接耗尽服务器资源
- 超时设置需根据网络状况调整
与 fsockopen 的区别
| 特性 | pfsockopen | fsockopen |
|---|---|---|
| 连接持久性 | 脚本结束后保持 | 脚本结束自动关闭 |
| 性能 | 更高(连接复用) | 较低 |
| 适用场景 | 高频短连接请求 | 一次性长连接 |
错误处理建议
if (!$socket) {
error_log("Socket error [$errno]: $errstr");
// 实现重试逻辑或备用方案
}






