PHP Conference Japan 2024

socket_set_block

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

socket_set_block设置套接字的阻塞模式

描述

socket_set_block(Socket $socket): bool

函数 socket_set_block() 会移除由 socket 参数指定的套接字上的 O_NONBLOCK 标志。

当在阻塞套接字上执行操作(例如接收、发送、连接、接受等)时,脚本将暂停其执行,直到收到信号或可以执行该操作。

参数

socket

使用 socket_create()socket_accept() 创建的 Socket 实例。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 socket 现在是一个 Socket 实例;以前,它是一个 resource

范例

示例 #1 socket_set_block() 示例

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

socket_accept($socket);
?>

此示例在所有接口上的端口 1223 上创建一个侦听套接字,并将套接字设置为 O_BLOCK 模式。 socket_accept() 将挂起,直到有连接需要接受。

参见

添加注释

用户贡献的注释 1 条注释

laacz at laacz dot lv
10 年前
除了 true 和 false 之外,如果不小心,socket_set_block 可能会返回 NULL。当将非套接字资源作为第一个参数传递时,就会发生这种情况。

例如,socket_set_block(false)) 将返回 NULL 并发出警告,表明您正在尝试对非套接字执行操作。
To Top