【问题标题】:Multi-cURL 5000 URLs多 cURL 5000 个 URL
【发布时间】:2013-05-30 15:53:14
【问题描述】:

我需要检查带有 db 条目的损坏图像。所以现在我从表中选择所有项目并使用 CURL 检查它是否损坏。我在 DB 中有近 5000 个项目,CURL 需要很多时间。对于一个结果,它显示总时间为 0.07 秒。我的表结构如下:

+----+----------------------------------------+
| id |               image_url                |
+----+----------------------------------------+
|  1 | http://s3.xxx.com/images/imagename.gif |
|  2 | http://s3.xxx.com/images/imagename.gif |
|  3 | http://s3.xxx.com/images/imagename.gif |
|  4 | http://s3.xxx.com/images/imagename.gif |
+----+----------------------------------------+

那么还有其他方法可以检查损坏的图像吗?我想我不能在这里使用 LIMITS 因为我需要检查所有项目然后打印结果。我有用户 file_get_contents() 但它也需要很多时间。

【问题讨论】:

  • 分而治之 :) 也许使用 ajax 分割检查会更快,或者只检查部分数据的脚本很少。取决于您是否要保存检查结果。
  • 我将数据存储到一个数组中并在报告中输出
  • 您是否有很多重复的 URL,例如在您的示例数据中?使用DISTINCT 禁止重复。
  • 没有。根本没有重复的网址。 :(
  • 谁拥有服务器 s3.xxx.com ?如果您有办法获取/images/ 内容列表,则可以将其加载到表中并运行单个连接查询。

标签: php mysql curl limit file-get-contents


【解决方案1】:

您可以在此处执行以下操作:

  1. 使用 multi_curl 并行卷曲图像。
  2. 仅指定标题(因为您对图像数据不感兴趣),如果状态代码不是 200 OK(或 302/Found),则图像不存在。
  3. 首先将 5000 个项目分块,不要使用 multi_curl 全部运行它们。一次大约 50-100 件就可以了。

【讨论】:

  • 您打算如何处理损坏的图片链接?您的目标是从数据库中删除它们吗?
  • 不是更简单的方法是从您这边提取文件名列表,然后将其发送给管理员,以便他可以对他们运行ls 吗?
  • @AlwinAugustin 服务器是你的还是外部站点?
  • @silkfire 无论如何我解决了这个问题。不是通过 CURL。我有一个 cron 来检查丢失的图像并发送邮件。所以现在我将每天丢失的所有图像插入数据库,并从中准备报告。谢谢人:)
  • 我用这个:onlineaspect.com/2009/01/26/… 作为参考来实现类似的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2019-06-03
  • 2023-04-07
  • 1970-01-01
相关资源
最近更新 更多