设置套接字为非阻塞模式

# socket_set_nonblock

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_set_nonblock — 设置套接字为非阻塞模式

### 说明

function socket_set_nonblock(Socket `$socket`): bool

socket_set_nonblock() 为由 `socket` 参数指定的套接字设置 `O_NONBLOCK` 标记。

当一个操作（例如接收、发送、连接、接受连接……）在一个非阻塞套接字上执行时，脚本在接受到信号或操作处理完成前都不会暂停执行。如果操作会导致阻塞，被调用的函数将失败。

### 参数

`socket`

  由 socket_create() 或 socket_accept() 创建的 Socket 实例。

### 返回值

成功时返回 `true`， 或者在失败时返回 `false`。

### 更新日志

版本 | 说明
--- | ---
8.0.0 | 现在 `socket` 是 Socket 实例， 之前是 resource。

### 示例

示例 #1 socket_set_nonblock() 示例

    <?php
    $socket = socket_create_listen(1223);
    socket_set_nonblock($socket);

    socket_accept($socket);
    ?>

此示例在 1223 端口上创建了监听所有接口的套接字，并把此套接字设置为 `O_NONBLOCK` 模式。除非此时恰好有待处理的连接，否则 socket_accept() 将立即失败。

### 参见

- socket_set_block() - 设置套接字为阻塞模式
- socket_set_option() - 为套接字设置套接字选项
- stream_set_blocking() - 为资源流设置阻塞或者阻塞模式

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open