【问题标题】:Check if links are 404 and if so, then send sms检查链接是否为 404,如果是,则发送短信
【发布时间】:2013-01-04 17:24:36
【问题描述】:

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

比如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 服务器运行此脚本以进行频繁检查。 非常感谢您的帮助!

【问题讨论】:

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


【解决方案1】:
  1. 使用cURL 请求页面的副本。
  2. 检查使用$http_status = curl_getinfo($http, CURLINFO_HTTP_CODE); 返回的HTTP 状态
  3. 如果不是 200,请向自己发送警报。

至于如何发送短信,几乎所有移动提供商都有一个电子邮件域,您可以使用它向您的手机发送短信,即:1235555555@mymobile.tld

【讨论】:

  • 为什么建议 cURL 扩展而不是 PHP HTTP 函数?
  • @SparKot 因为 PHP 没有像样的内置 HTTP 函数。当然没有一个会返回响应代码。
  • cURL 很好 - 但$response = http_get("http://www.example.com/", array("timeout"=>1), $info); 会给出包含响应代码的响应。请参阅 SparKot 在对原始问题的评论中提供的链接。
  • @Floris http_get() 是来自 PECL 扩展的函数。
  • 谢谢大家,我不是程序员,所以我不能真正将上面的部分放在一起。在此期间,我使用了 uptimerobot.com。
【解决方案2】:
  1. file_get_contents()打开你的文本文件
  2. 对于每个 URL,执行 get_headers()
  3. 检查$headers[0] 是否包含200 OK

【讨论】:

  • 您可以通过将 URL 传递给 get_headers() 来一步完成此操作,而无需先执行 file_get_contents()。例如: if (get_headers($url)[0] == 'HTTP/1.1 404 Not Found') {// 发送文本}
  • @Levi 你需要先解析包含链接的文件links.txt
  • Mathieu,我很抱歉,我在阅读问题时完全错过了那句话。
【解决方案3】:
<?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';}

?>

【讨论】:

    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多