PHP Conference Japan 2024

socket_set_block

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

socket_set_block設定 socket 的阻塞模式

說明

socket_set_block(Socket $socket): bool

socket_set_block() 函式會移除由 socket 參數指定的 socket 上的 O_NONBLOCK 旗標。

當在阻塞 socket 上執行操作(例如接收、發送、連線、接受等)時,腳本將會暫停執行,直到收到訊號或可以執行該操作為止。

參數

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 建立一個監聽 socket,並將 socket 設定為 O_BLOCK 模式。 socket_accept() 將會持續等待,直到有連線可以接受。

參見

新增註解

使用者貢獻的註解 1 則註解

2
laacz at laacz dot lv
10 年前
除了 true 和 false 之外,如果您不夠小心,socket_set_block() 也可能會返回 NULL。當傳遞非 socket 資源作為第一個參數時,就會發生這種情況。

例如,socket_set_block(false)) 會返回 NULL 並發出警告,表示您正在嘗試對非 socket 進行操作。
To Top