这三个选项中哪一个最快填充我的数据库表?

时间:2013-02-14 09:05:02

标签: php mysql curl xmlreader

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

URL     Title      Description

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

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

选项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中的url,以查看它是否与我表中的640万个url中的一个匹配,如果匹配,则添加标题和说明。

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

对于那些网址,选项2或3会比仅使用选项1更快吗?如果是,两个选项中的哪一个会更快?

2 个答案:

答案 0 :(得分:1)

这只是一个脚本,你只会运行一次..如果它不是很快就没关系。 顺便说一下,600万行不是太大,在任何体面的计算机上都需要几分钟。

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

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

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

  1. 获取cheap vps服务器(连接速度比家用计算机快)。
  2. 将网址导出到文字文件。
  3. 使用wget下载每个URL(不要忘记使用多个wget进程)。

答案 1 :(得分:0)

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

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

相关问题