如何判断mysql数据库中的链接是否有效?

时间:2013-01-13 20:48:14

标签: php mysql

Massive新手,所以任何帮助都非常感激。

我有一个包含大约30,000个条目的mysql数据库,每个条目都有一个.jpg格式的缩略图链接。

我试图弄清楚是否有任何方法要通过mysql数据库并验证每个链接是否仍然有效 - 即如果.jpg文件是它的位置?

所以每个条目都有一个id,name,thumb(这是一个url)。

谢谢!

3 个答案:

答案 0 :(得分:0)

对于链接,请执行查询以获取所有链接,例如:

SELECT DISTINCT url FROM your_stuff;

您没有提到数据库的确切性质,但这样的事情应该有效。

然后循环遍历它,对于每一个,使用类似cURL的东西来做一个HEAD请求 - 这比通常的GET请求更好,因为它是相同的,除了服务器不应该返回实际文件,所以你不要必须下载每个图像只是为了看看它们是否在那里。只需执行HEAD请求,并确认服务器的状态为200。

This question goes into a little more about the HEAD request in cURL

答案 1 :(得分:0)

在你的问题中考虑这一行:“每个都有一个.jpg格式的缩略图链接。”

您也可以尝试regexp:以.jpg

结尾
SELECT DISTINCT url_column as regex_u, id 
    FROM your_table
    where url_column regexp '\(.jpg)$';

即使使用likecontains jpg

    SELECT DISTINCT url_column as like_u, id 
    FROM your_table
    where url_column like '%.jpg%';

另一个有instr:

    SELECT DISTINCT url_column as instr_u , id
    FROM your_table
    where instr(url_column, '.jpg') > 0;

如果您想匹配整个ulr

    SELECT DISTINCT url_column as url_u, id 
    FROM your_table
    where url_column regexp '^(https?://|www\\.)[\.A-Za-z0-9/_\-]+\\.(jpg)$'
    ;

另一位使用Right

    SELECT DISTINCT url_column as right_u, id 
    FROM your_table
    where Right(url_column,4) = '.jpg';

请检查explain plan以获得最有效的解决方案。 LIKE似乎耗时最长。

答案 2 :(得分:0)

SQL Fiddle

SELECT * from table_name where SUBSTRING(url, -3, 3) = 'jpg';