![]() |
||
|
New Member
加入日期: Feb 2007
文章: 3
|
PHP新手一問
小弟需要一段PHP來確認網路上某個檔案是否存在,所以開啟一個socket連結,使用HEAD
語法如下: $fp = fsockopen ("網址", 80, &$errno, &$errstr,10); fputs ($fp, "HEAD / HTTP/1.0\r\n\r\n"); while (!feof($fp)) { echo fgets ($fp,128); } fclose ($fp); 測試tw.yahoo.com.tw 回應是HTTP/1.1 200 OK 但是測試www.pcdvd.com.tw 卻回應HTTP/1.1 404 Not found 使用GET /index.php也一樣HTTP/1.1 404 Not found www.yam.com亦同 有一個相同點是Server: Zeus 但有些Microsoft-IIS/5.0的站也有同樣的情形 是我的語法問題或對方伺服器設定的關係? 有何其他更好的方法嗎? 謝謝 ![]()
__________________
- |
|||||||
|
|
|
Major Member
![]() 加入日期: Aug 2001
文章: 211
|
你有沒把 HEAD 改成 HTTP Request GET 試過?
我記得取 errno 與 errstr 應該不需要用到 reference。 我三四年沒碰 PHP 了,以下寫法沒測試過,你自己試吧。 代碼:
$domain = "www.pcdvd.com.tw";
$port = 80;
$timeout = 30;
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: $domain\r\n";
$out .= "Connection: Close\r\n\r\n";
$fp = fsockopen ($domain, $port, $errno, $errstr, $timeout);
fputs ($fp, $out);
while (!feof($fp)) { echo fgets ($fp,128); }
fclose ($fp);
__________________
滿招損 謙受益 |
||
|
|
|
New Member
加入日期: Feb 2007
文章: 3
|
引用:
測試後正確,大大三四年沒碰依舊熟練喔,在此拜謝 (王建民第二次先發 洋基VS紅襪開打了喔)
__________________
- |
|
|
|
|
Power Member
![]() ![]() 加入日期: Jan 2002 您的住址: Taipei
文章: 664
|
直接用 curl 抓吧. 使用簡單, 功能用強.
__________________
Tommy 碎碎念... |
|
|
|
Major Member
![]() 加入日期: Aug 2001
文章: 211
|
引用:
你的想法是對的,但是不是所有裝 php 的機器都會裝 curl extension。 我碰過有人沒有現成 api/library 可以用又要做 web service,後來我直接跑 socket 幫他們解決問題。 很多現在的商業網站都是用較舊的系統在運作的,你不可能要求對方裝 .net 或什麼 extension。 能用現有資源解決問題才是正途。
__________________
滿招損 謙受益 |
|
|
|
|
Major Member
![]() 加入日期: Aug 2001
文章: 211
|
引用:
解決你的問題就好了,其實那個是拿 manual 跟你的 code copy/paste 後修的,我根本沒試過。 王40又敗投了,洋基最近牛棚都是提油上場的,悶了。
__________________
滿招損 謙受益 |
|
|
|