1

我有一个(巨大的:640 万行)数据库表,其中三列如下:

URL     Title      Description

现在只填充了 URL 列,其中包含来自网络的各种 url。我必须在每一行的 url 中添加标题和元描述。我认为我可以通过三种方式做到这一点:

选项 1:使用 php 和 CURL 转到每个 url 并获取标题和 meta:description。(即使使用选项 2 或 3,我也必须至少对部分 url 执行此操作)。

选项 2:我有一个 DMOZ xml 文件,其中包含数百万个元素,如下所示:

    <ExternalPage about="http://animation.about.com/">
       <d:Title>About.com: Animation Guide</d:Title>
       <d:Description>Keep up with developments in online animation for all skill levels.     Download tools, and seek inspiration from online work.</d:Description>
       <topic>Top/Arts/Animation</topic>
    </ExternalPage>
    <ExternalPage about="http://www.toonhound.com/">
       <d:Title>Toonhound</d:Title>
       <d:Description>British cartoon, animation and comic strip creations - links, reviews  and news from the UK.</d:Description>
       <topic>Top/Arts/Animation</topic>
    </ExternalPage>

等等

我可以使用 xmlreader 比较每个 ExternalPage-about 中的 url,以查看它是否与我的表中的 640 万个 url 中的一个匹配,如果匹配,则添加标题和描述。

选项 3:我可以将上述所有 dmoz 数据写入单独的数据库表(再次使用 xmlreader),这也需要时间,然后以某种方式在两个表上使用 JOIN 和 SELECT 来获取我需要的信息。

对于这些 url,选项 2 或 3 会比仅对所有 url 使用选项 1 更快吗?如果是,这两个选项中哪一个会更快?

4

2 回答 2

1

它只是一个脚本,你只会运行一次。如果它不是很快也没关系。顺便说一句,600 万行并不是太大,在任何像样的计算机上都需要几分钟。

CURL 解决方案根本不是一种选择!你知道获取 600 万个 URL 需要多长时间吗?!!

将 XML 插入数据库,并根据需要进行查询。

编辑:要捕获数百万个 URL(可能需要数周才能完成!):

  1. 获得便宜的 vps服务器(比您的家用计算机更快的连接)。
  2. 将 url 导出到文本文件。
  3. 使用 wget 下载每个 URL(不要忘记使用多个 wget 进程)。
于 2013-02-14T09:24:05.697 回答
0

假设“更快”意味着更新 URL 表的时间更少,那么选项 3 似乎是最好的选择。

您可以使用 XML 中的记录填充另一个表,然后使用 JOIN 更新您的主表。

于 2013-02-14T09:29:37.333 回答