gpt4 book ai didi

php - 从 MySQL 表自动检查 URL

转载 作者:行者123 更新时间:2023-11-29 05:45:26 25 4
gpt4 key购买 nike

好的,我在 MySQL 表中有一个 URL 列表。我希望脚本自动检查表中的每个链接是否存在 404,然后我希望它存储 URL 是否为 404,并存储上次检查的时间。

即使没有人运行脚本,这甚至可以自动执行吗?即,几天没有人访问该页面,但即使没有人访问该页面,它也会自动运行测试。

如果可能的话,我怎样才能制作一个按钮来执行此操作?

最佳答案

无需使用 CURL,file_get_contents($url); 如果请求失败(除 2xx 之外的任何其他 HTTP 代码)将返回 false,这可能对您尝试的内容更有用做一个例子:

function urlExists($url)
{
return (bool) @file_get_contents($url);
}

如果 URL 返回有用的内容,则返回 true,否则返回 false。


编辑:这是一种更快的方法(它只请求 header )和第一个字节而不是整个页面:

function urlExists($url)
{
return (bool) @file_get_contents($url, false, null, 0, 1);
}

urlExists('https://stackoverflow.com/iDontExist'); // false

但是,结合 your other question使用这样的东西可能更明智:

function url($url)
{
return @file_get_contents($url);
}

$content = url('https://stackoverflow.com/');

// request has failed (404, 5xx, etc...)
if ($content === false)
{
// delete or store as "failed" in the DB
}

// request was successful
else
{
$hash = md5($content); // md5() should be enough but you can also use sha1()

// store $hash in the DB to keep track of changes
}

或者,如果您使用的是 PHP 5.1+,您只需要做:

$hash = @md5_file($url);

$hash 在 URL 加载失败时为 false,否则返回内容的 MD5 哈希值。

亲切地stolen from @Jamie . =)

这样一来,您只需提出一个请求,而不是两个。 =)

关于php - 从 MySQL 表自动检查 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2719012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com