2013-01-21 69 views
0

我想弄清楚一個PHP腳本來檢查從一個單獨的文本文件的鏈接一堆,如果他們中的任何人顯示404然後腳本應該觸發一個PHP文件,它會發送短信通知。我已經準備好了短信文件,只需觸發即可。檢查鏈接是否404,如果是,然後發送短信

例如,有在links.txt幾個鏈接(也上載到服務器上),如

http://example.com/link1 
http://example.com/link2 
http://example.com/link3 

這些鏈接不一定離線,它們可以被重定向到一個不存在的頁面,而主要網站是活着的。

If example.com/link1 is down smsnotice1.php should be triggered 
If example.com/link2 is down smsnotice2.php should be triggered 
If example.com/link3 is down smsnotice3.php should be triggered 

的參考smsnotice1.php,smsnotice2.php,smsnotice3.php可以是在主腳本或另一個PHP文件。

如果沒有鏈接關閉,則不應發送通知。

我可以從一臺cron上的php服務器上運行這個腳本進行頻繁檢查。 非常感謝您的幫助!

+3

[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

爲什麼不從[HTTP GET](http:// in1 .php.net/manual/en/function.http-get.php)?請嘗試! – SparKot

+0

用戶'curl'發出請求,只返回頭文件並對其進行評估。 – arkascha

回答

2
  1. 使用cURL要求頁面的副本。
  2. 檢查返回的HTTP狀態與$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
  3. 如果它不是200以外的任何東西發送警報。

至於如何發送短信,幾乎所有的移動運營商有一個電子郵件域,你可以用它來短信發送到您的手機,即:[email protected]

+0

+1使用cURL – Tchoupi

+0

爲什麼建議通過PHP HTTP函數進行cURL擴展? – SparKot

+1

@SparKot因爲PHP沒有體面的內置HTTP功能。當然,沒有任何回饋代碼。 – Sammitch

1
  1. 打開與file_get_contents()
  2. 對於每個URL文本文件,做一個get_headers()
  3. 檢查$headers[0]包含200 OK
+0

通過將URL傳遞到get_headers(),您可以在不執行file_get_contents()的情況下一步完成此操作。例如:if(get_headers($ url)[0] =='HTTP/1.1 404 Not Found'){//發送文本} – Levi

+0

@Levi您需要先解析包含鏈接的文件'links.txt' – Tchoupi

+0

Mathieu,我的道歉,在閱讀這個問題時,我完全錯過了這一行。 – Levi

1
<?php 
$url="http://site.com"; 
$handle = curl_init($url); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 

/* Get the HTML or whatever is linked in $url. */ 
$response = curl_exec($handle); 
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); 
/* Check for 404 (file not found). */ 

if ($httpCode == '404') 
     { echo 'yes';} 
else  
     {echo 'no';} 

?>