![]() |
PCDVD數位科技討論區
(https://www.pcdvd.com.tw/index.php)
- 七嘴八舌異言堂
(https://www.pcdvd.com.tw/forumdisplay.php?f=12)
- - PHP新手一問
(https://www.pcdvd.com.tw/showthread.php?t=715160)
|
|---|
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的站也有同樣的情形 是我的語法問題或對方伺服器設定的關係? 有何其他更好的方法嗎? 謝謝 :like: |
你有沒把 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);
|
引用:
測試後正確,大大三四年沒碰依舊熟練喔,在此拜謝 :like: (王建民第二次先發 洋基VS紅襪開打了喔) |
直接用 curl 抓吧. 使用簡單, 功能用強.
|
引用:
你的想法是對的,但是不是所有裝 php 的機器都會裝 curl extension。 我碰過有人沒有現成 api/library 可以用又要做 web service,後來我直接跑 socket 幫他們解決問題。 很多現在的商業網站都是用較舊的系統在運作的,你不可能要求對方裝 .net 或什麼 extension。 能用現有資源解決問題才是正途。 |
引用:
解決你的問題就好了,其實那個是拿 manual 跟你的 code copy/paste 後修的,我根本沒試過。 王40又敗投了,洋基最近牛棚都是提油上場的,悶了。 |
| 所有的時間均為GMT +8。 現在的時間是11:42 AM. |
vBulletin Version 3.0.1
powered_by_vbulletin 2026。