fsockopen()函數(shù)打開一個(gè)網(wǎng)絡(luò)連接或者一個(gè)Unix套接字連接。
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
它用于打開Internet或Unix域套接字連接。
初始化一個(gè)套接字連接到指定主機(jī)(hostname)。
PHP支持以下的套接字傳輸器類型列表 所支持的套接字傳輸器(Socket Transports)列表。也可以通過stream_get_transports()來獲取套接字傳輸器支持類型。
默認(rèn)情況下將以阻塞模式開啟套接字連接。當(dāng)然你可以通過stream_set_blocking()將它轉(zhuǎn)換到非阻塞模式。
stream_socket_client()與之非常相似,而且提供了更加豐富的參數(shù)設(shè)置,包括非阻塞模式和提供上下文的的設(shè)置。
fsockopen()將返回一個(gè)文件句柄,之后可以被其他文件類函數(shù)調(diào)用(例如:fgets(),fgetss(),fwrite(),fclose()還有feof())。如果調(diào)用失敗,將返回FALSE。
注意:如果主機(jī)(hostname)不可訪問,將會(huì)拋出一個(gè)警告級別(E_WARNING)的錯(cuò)誤提示。
序號 | 參數(shù)和說明 |
---|---|
1 | hostname 如果安裝了OpenSSL,那么你也許應(yīng)該在你的主機(jī)名地址前面添加訪問協(xié)議ssl://或者是tls://,從而可以使用基于TCP/IP協(xié)議的SSL或者TLS的客戶端連接到遠(yuǎn)程主機(jī)。 |
2 | port 端口號。如果對該參數(shù)傳一個(gè)-1,則表示不使用端口,例如unix://。 |
3 | errno 保存系統(tǒng)級connect()調(diào)用中發(fā)生的系統(tǒng)級錯(cuò)誤號 |
4 | errstr 錯(cuò)誤信息將以字符串的信息返回。 |
5 | timeout 設(shè)置連接的時(shí)限,單位為秒。 |
試試下面的實(shí)例
<?php $connection = fsockopen("www.jixiangtaizi.com.cn", 80, $errno, $errstr, 30); if (!$connection) { echo "$errstr ($errno) \n"; }else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.jixiangtaizi.com.cn\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($connection, $out); while (!feof($connection)) { echo fgets($connection, 128); } fclose($connection); } ?>
上面的示例打開連接