检查链接是否为404,如果是,则发送短信

时间:2013-01-21 15:52:10

标签: php html validation cron http-status-code-404

我试图找出一个php脚本来检查来自单独文本文件的一堆链接,如果其中任何一个显示404,那么脚本应该触发一个php文件,它将发送短信通知。我已经准备好sms文件了,只需要触发它。

例如,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 个答案:

答案 0 :(得分:2)

  1. 使用cURL申请页面副本。
  2. 检查使用$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE);
  3. 返回的HTTP状态
  4. 如果不是200以外的任何其他人发送警报。
  5. 至于如何发送短信,几乎所有移动服务提供商都有一个电子邮件域,您可以使用该域发送短信到您的手机,即:1235555555@mymobile.tld

答案 1 :(得分:1)

  1. 使用file_get_contents()
  2. 打开文本文件
  3. 对于每个网址,请执行get_headers()
  4. 检查$headers[0]是否包含200 OK

答案 2 :(得分: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';}

?>