我有一个(巨大的: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中的url,看看它是否与表中640万个url中的一个匹配,如果匹配,请添加标题和描述。
选项3:我可以将上述所有dmoz数据写入一个单独的数据库表(再次使用xmlreader),这也需要时间,然后在这两个表上使用JOIN和SELECTs来获得我需要的信息。
对于这些url,选项2或3会比仅对所有url使用选项1更快吗?如果是,两个选项中哪一个会更快?
这只是一个脚本,您只会运行一次。。如果不是很快也没关系。顺便说一下,600万行并不太大,在任何一台像样的电脑上都需要几分钟的时间。
CURL解决方案根本不是一个选项!你知道要花多长时间才能拍到600万个URL吗?!!
将XML插入数据库,并根据需要进行查询。
编辑:捕获数百万个URL(可能需要数周时间才能完成!):
- 买一台便宜的vps服务器(连接速度比家用电脑快)
- 将URL导出到文本文件
- 使用wget下载每个URL(不要忘记使用多个wget进程)
假设"更快"意味着更新URL表的时间更短,那么选项3似乎是最好的选择。
您可以用XML中的记录填充另一个表,然后使用JOIN更新主表。