PHP Socket編程 之使用fsockopen()函數

來源:互聯網
上載者:User

標籤:

Socket可以理解為兩台電腦相互連信的通道。

用法:使用fsockopen()函數

具體用法詳見上篇文章。函數的參數為URL、連接埠號碼、一個存放錯誤編號的變數、一個存放錯誤資訊字串的變數和逾時等待時間。(只有第一個參數是必須的)

常見的連接埠表:

連接埠號碼

主要用途

21

FTP

22

SSH

23

Telnet

25

SMTP

80

Web

110

POP

其中,組成URl的幾個部分為:協議名(scheme),主機(host),連接埠號碼(port),檔案路徑(path),查詢參數(query)。

當url是http://www.example.com/view.php?week=1#demo時:

指標

Scheme

http

Host

www.example.com

Port

80

User

 

Pass

 

Path

View.php

Query

Week=1

Fragment

#demo

常見的HTTP狀態代碼:

代碼

含義

200

OK

204

NO Content

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

408

Time out

5**

Server error

【樣本】:

<?PHP         function check_url($url){                //解析url                $url_pieces = parse_url($url);                //設定正確的路徑和連接埠號碼                $path =(isset($url_pieces[‘path‘]))?$url_pieces[‘path‘]:‘/‘;                $port =(isset($url_pieces[‘port‘]))?$url_pieces[‘port‘]:‘80‘;                //用fsockopen()嘗試串連                if($fp =fsockopen($url_pieces[‘host‘],$port,$errno,$errstr,30)){                       //建立成功後,向伺服器寫入資料                       $send = "HEAD $path HTTP/1.1\r\n";                       $send .= "HOST:$url_pieces[‘host‘]\r\n";                       $send .= "CONNECTION: CLOSE\r\n\r\n";                       fwrite($fp,$send);                       //檢索HTTP狀態代碼                       $data = fgets($fp,128);                       //關閉串連                       fclose($fp);                       //返回狀態代碼和類資訊                       list($response,$code) = explode(‘ ‘,$data);                       if(code == 200){                              return array($code,‘good‘);                       }else{                              return array($code,‘bad‘);//數組第二個元素作為css類名                       }                }else{                       //沒有串連                       return array($errstr,‘bad‘);                }                        }         //建立URL列表         $urls = array(                ‘http://www.sdust.com‘,                ‘http://www.example.com‘         )         //調整PHP指令碼的時間限制:         set_time_limit(0);//無限長時間完成任務         //逐個驗證url:         foreach($urls as $url){                list($code,$class) = check_url($url);                echo "<p><a href =\"$url\">$url</a>(<span class =\"$class\">$code</span>)</p>";                        }  ?>  

使用fsockopen()函數比fopen()函數的優點:fopen()只會在PHP中已經將allow_url_fopen設定為真時才能使用,而fsockopen()並沒有限制。

PHP Socket編程 之使用fsockopen()函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.