stream_socket_shutdown
關閉全雙工連接
函數名稱:stream_socket_shutdown()
函數描述:stream_socket_shutdown() 函數關閉用stream_socket_client() 或stream_socket_server() 創建的套接字連接。
適用版本:PHP 4 >= 4.0.7, PHP 5, PHP 7
語法:bool stream_socket_shutdown(resource $stream, int $how)
參數:
返回值:成功時返回true,失敗時返回false。
示例:
// 创建套接字连接$socket = stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 30); // 发送HTTP请求$request = "GET / HTTP/1.1\r\n"; $request .= "Host: www.example.com\r\n"; $request .= "Connection: close\r\n\r\n"; fwrite($socket, $request); // 关闭写入连接,继续读取服务器响应stream_socket_shutdown($socket, STREAM_SHUT_WR); // 读取服务器响应$response = ''; while (!feof($socket)) { $response .= fgets($socket); } // 关闭读取连接stream_socket_shutdown($socket, STREAM_SHUT_RD); // 关闭套接字连接fclose($socket);
上述示例演示瞭如何使用stream_socket_shutdown() 函數在發送HTTP請求後關閉寫入連接,並繼續讀取服務器的響應。首先,使用stream_socket_client() 函數創建套接字連接,然後發送HTTP請求並關閉寫入連接。接著,使用fgets() 函數循環讀取服務器響應,直到結束。最後,關閉讀取連接並關閉套接字連接。
請注意,示例中的關閉連接順序是先關閉寫入連接,再關閉讀取連接。這是因為在HTTP請求中,客戶端先發送請求,然後等待服務器響應。因此,我們首先關閉寫入連接以告知服務器請求已發送完畢,然後繼續讀取服務器的響應。