Php 如何确定mysql数据库中的链接是否有效?

Php 如何确定mysql数据库中的链接是否有效?,php,mysql,Php,Mysql,大量新手,所以非常感谢任何帮助 我有一个mysql数据库,大约有30000个条目,每个条目都有一个指向.jpg格式缩略图的链接 我试图弄清楚是否有必要检查mysql数据库,并验证每个链接是否仍然有效-也就是说.jpg文件是否在它应该位于的位置 因此,每个条目都有一个id、name和thumb(这是一个url) 谢谢 对于链接,执行查询以获取所有链接,例如: SELECT DISTINCT url FROM your_stuff; 您没有提到数据库的确切性质,但类似的东西应该可以工作 然后在它上

大量新手,所以非常感谢任何帮助

我有一个mysql数据库,大约有30000个条目,每个条目都有一个指向.jpg格式缩略图的链接

我试图弄清楚是否有必要检查mysql数据库,并验证每个链接是否仍然有效-也就是说.jpg文件是否在它应该位于的位置

因此,每个条目都有一个id、name和thumb(这是一个url)


谢谢

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

SELECT DISTINCT url FROM your_stuff;
您没有提到数据库的确切性质,但类似的东西应该可以工作

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


.

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

您也可以尝试使用
regexp
:以
.jpg

SELECT DISTINCT url_column as regex_u, id 
    FROM your_table
    where url_column regexp '\(.jpg)$';
即使是像这样的
也包含
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)$'
    ;
另一个使用
右键

    SELECT DISTINCT url_column as right_u, id 
    FROM your_table
    where Right(url_column,4) = '.jpg';
请查看
解释计划
,了解最有效的解决方案<代码>像
似乎花费的时间最长


mysql选择,然后循环结果并使用Dagon提出了一个很好的观点-这些“链接”是不同站点的URL中的链接,还是文件路径中的“链接”?另外,您使用的是PDO、MySQLi还是mysql?它们是链接-就像URL中的链接-我相信我使用的是MySQLi。@Bruf请尝试并发表评论。如果您能显示一些示例url,以确保
regexp
适合,那就太好了;)示例url看起来像@BruffO'Reilly IC现在你的意思是什么。。。你有tif.jpg。。这意味着它以
.jpg
结尾,那么你有很多选择。如果它需要包含
griffiths
,我们可以将其添加到开头。请尝试一下,让我知道。
SELECT * from table_name where SUBSTRING(url, -3, 3) = 'jpg';