我有一个SQL表,其中一列有各种url链接。有谁知道查询/功能/等。这将遍历每一行并验证或验证链接是否仍然有效。我有一些问题,我桌子上的一些网址仍然有效,其他人给我404.
答案 0 :(得分:2)
这不能仅仅通过SQL完成,但可以使用脚本完成(我建议将其作为例行服务)。以下用作mysql + php示例。请记住,这不是生产代码,我写得非常快,只是为了让您了解如何实现这一目标。
<?php
/* Database Connection Config */
$db_host = '127.0.0.1';
$db_user = 'your_username';
$db_password = 'your_password';
$db = 'your_database';
$conn = new PDO("mysql:host=$db_host;dbname=$db",$db_user,$db_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
/* Pull all URLS in table. */
$query = 'SELECT url_id, url FROM url_table';
$stmt = $conn->prepare($query);
$stmt->execute();
$rc = $stmt->rowCount();
if($rc > 0) {
while($row = $stmt->fetch()) {
/* If url returns 404. */
if(!is_url_valid($url)) {
delete_url($row['url_id']);
}
}
}
function delete_url($url_id) {
global $conn;
$query = 'DELETE from url_table WHERE url_id = '.$url_id;
$stmt = $conn->prepare($query);
$stmt->execute();
$rc = $stmt->rowCount();
return $rc;
}
/* Returns true/false */
function is_url_valid($url) {
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($handle);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
$status = false;
} else {
$status = true;
}
curl_close($handle);
return $status;
}
?>
答案 1 :(得分:0)