【问题标题】:PHP - How to check URLS for 404/Timeout?PHP - 如何检查 404/超时的 URL?
【发布时间】:2011-04-11 05:14:11
【问题描述】:

这是我的结构:

MYSQL:表:玩具--->列:id,URL。如何让我的 PHP 脚本检查所有这些 URL 以查看它们是否存在或有 404 页?尽量不要在页面上回显或显示结果。我需要在 MYSQL 中记录一个额外的“检查”列。

结果将采用以下格式:

http://asdasd.adas --- 向上 --- 404

如果可能,它将在 PHP/Curl 中。我已经尝试了很多年。我放弃了,所以决定在这里问。

网址都位于我的数据库中。

【问题讨论】:

    标签: php mysql curl curl-multi


    【解决方案1】:

    在 cURL 中,有一个 curl_getinfo 函数,它返回一些关于当前句柄的信息:

    <?php
    // Create a curl handle
    $ch = curl_init('http://www.yahoo.com/');
    
    // Execute
    curl_exec($ch);
    
    //fill here the error/timeout checks.
    
    $http_code = curl_getinfo($ch,  CURLINFO_HTTP_CODE);
    

    【讨论】:

    • 我将从数据库中获取 URL,一旦结果显示它记录到 MYSQL 数据库。这就是我需要的。
    • @Raymond 从数据库中获取它们,循环记录,并按照@zneak 所说的进行相应更新。
    【解决方案2】:

    我相信您能够运行 SQL 查询并枚举结果,因此这里是 cURL 部分。对于每个 URL,向其发送 HEAD 请求,并检查结果代码。

    <?php
    $handle = curl_init($yourURL);
    curl_setopt($handle, CURLOPT_NOBODY, true);
    curl_exec($handle);
    $result = curl_getinfo($handle, CURLINFO_HTTP_CODE);
    // $result now contains the HTTP result code the page sent
    ?>
    

    【讨论】:

    • 如何将结果记录到我的数据库中的正确列上?
    • @Raymond 使用UPDATE 语句。你有一些 SQL 语言的基础知识吗?
    • zneak,不是真的,而是一点。我根据更新声明。给我一个结构。
    • @Raymond UPDATE toys SET checks = ? WHERE id = ?,你必须填写checks的空白(0或1取决于页面是否存在)和id(带有行的 id)。
    猜你喜欢
    • 2011-04-05
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2010-11-02
    • 1970-01-01
    • 2014-10-28
    • 2016-12-12
    相关资源
    最近更新 更多