函数名称:stream_set_timeout()
适用版本:PHP 4, PHP 5, PHP 7
用法:stream_set_timeout(resource $stream, int $seconds, int $microseconds = 0): bool
函数描述:stream_set_timeout() 用于设置指定流的超时时间。超时时间指定了在读取或写入流时等待数据的最长时间。如果在超时时间内没有读取或写入任何数据,函数将返回 false。
参数:
- $stream:要设置超时时间的流资源。
- $seconds:超时时间的秒数部分。如果设置为 0,则表示没有超时限制。
- $microseconds:超时时间的微秒数部分。默认值为 0。
返回值:如果成功设置超时时间,则返回 true;否则返回 false。
示例:
// 创建一个 TCP 客户端连接
$socket = stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 30);
if (!$socket) {
die("连接失败: $errstr ($errno)");
}
// 设置超时时间为5秒
if (stream_set_timeout($socket, 5) === false) {
die("设置超时时间失败");
}
// 发送HTTP请求
$request = "GET / HTTP/1.1\r\n";
$request .= "Host: www.example.com\r\n";
$request .= "Connection: close\r\n\r\n";
fwrite($socket, $request);
// 读取响应
$response = '';
while (!feof($socket)) {
$response .= fread($socket, 8192);
}
// 关闭连接
fclose($socket);
echo $response;
在上面的示例中,我们首先使用 stream_socket_client() 函数创建了一个 TCP 客户端连接。然后,使用 stream_set_timeout() 函数将超时时间设置为 5 秒。接下来,我们发送了一个 HTTP 请求并读取了服务器的响应。最后,关闭了连接并打印出响应内容。
请注意,设置超时时间仅适用于读取和写入操作,并不会影响连接的建立或关闭过程。