面试题,关于处理大量数据的问题

有50万个URL在一个文件中,每一行有一个URL,请写出简单的流程图抓取这些网页中的内容,并把页面里面的a标签中的链接提出保存到数据库

我一开始想的是存到数据库再分批取出处理,但是面试官一听就不再和我讨论了, 不知道有没有问题?希望大佬们解答一下

阅读 2.5k
4 个回答

看题目,我觉得面试官的意图应该是想考察php读取大文件。后面的内容我只能想到file_get_contents + 正则,然后insert到数据库

回到php读取大文件,大概有以下办法:

1、gets逐行读取
2、利用php的yield特性,也就是迭代器

PHP读取大文件,我觉得也是用yield

<?php
function readTxt()
{
    $handle = fopen("./test.txt", 'rb');
    while (feof($handle)===false) yield fgets($handle);
    fclose($handle);
}

foreach (readTxt() as $key => $value) {
    echo $value;
}

可以了解下mapReduce,这就是搜索引擎的一部分,谷歌和百度肯定有过解决方案的。顺着mapReduce了解下吧。可以看下这个MIT的公开课了解系统了解一下:https://www.bilibili.com/vide...

可能是希望你把这些待采集URL放到消息队列里,比如Kafka之类

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题