函式名稱:socket_set_timeout()
適用版本:所有PHP版本
用法:socket_set_timeout(resource $socket, int $seconds, int $microseconds = 0): bool
函式描述:socket_set_timeout() 函式用於設定給定套接字的超時時間。超時時間指定了在讀取或寫入操作時等待資料的最長時間。
引數:
- $socket:必需,一個有效的套接字資源,透過 socket_create() 或 socket_accept() 等函式建立。
- $seconds:必需,指定超時時間的秒數。如果設定為0,表示禁用超時。
- $microseconds:可選,指定超時時間的微秒數。預設為0。
返回值:成功時返回 true,失敗時返回 false。
示例:
// 建立套接字
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 設定超時時間為10秒
if (socket_set_timeout($socket, 10) === false) {
echo "設定超時時間失敗";
}
// 連線到伺服器
if (socket_connect($socket, '127.0.0.1', 8080) === false) {
echo "連線伺服器失敗";
}
// 傳送資料
$data = "Hello, server!";
if (socket_write($socket, $data, strlen($data)) === false) {
echo "傳送資料失敗";
}
// 讀取伺服器響應,最多等待5秒
if (($response = socket_read($socket, 1024)) === false) {
echo "讀取伺服器響應失敗";
}
// 關閉套接字
socket_close($socket);
在上面的示例中,我們首先建立了一個套接字,然後使用 socket_set_timeout() 函式設定超時時間為10秒。接下來,我們使用 socket_connect() 函式連線到伺服器,並使用 socket_write() 函式傳送資料。然後,使用 socket_read() 函式讀取伺服器的響應,最多等待5秒。最後,我們使用 socket_close() 函式關閉套接字。
注意:在實際使用中,根據具體需求,可以根據實際情況調整超時時間的設定。