首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[函数]stream_set_blocking()函数—用法及示例

发布于 2025-05-08 18:55:05
0
6

函数名:stream_set_blocking()

适用版本:PHP 4 >= 4.3.0, PHP 5, PHP 7

用法:stream_set_blocking(resource $stream, bool $mode): bool

函数描述:stream_set_blocking()函数用于设置给定流的阻塞或非阻塞模式。

参数:

  • $stream:要设置模式的流资源。
  • $mode:指定流的模式。如果$mode为true,则流将被设置为阻塞模式;如果$mode为false,则流将被设置为非阻塞模式。

返回值:成功时返回true,失败时返回false。

示例:

// 创建一个网络套接字流
$socket = stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 30);

// 将套接字流设置为非阻塞模式
if (!stream_set_blocking($socket, false)) {
    die('无法设置套接字流为非阻塞模式');
}

// 发送HTTP请求
fwrite($socket, "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: Close\r\n\r\n");

// 读取响应
$response = '';
while (!feof($socket)) {
    $response .= fread($socket, 8192);
}

// 关闭套接字流
fclose($socket);

echo $response;

上述示例中,我们首先创建了一个网络套接字流,然后使用stream_set_blocking()函数将套接字流设置为非阻塞模式。接下来,我们发送HTTP请求并读取响应。最后,关闭套接字流并输出响应内容。

通过将套接字流设置为非阻塞模式,我们可以在等待响应时继续执行其他操作,而不必等待服务器的响应。这对于处理大量并发请求或需要同时处理多个任务的情况非常有用。

评论
一个月内的热帖推荐
啊龙
Lv.1普通用户

8926

帖子

29

小组

2863

积分

站长交流