Php 获取数百万外部标题和描述的最快方式是什么?

Php 获取数百万外部标题和描述的最快方式是什么?,php,curl,web-scraping,Php,Curl,Web Scraping,我有一个Mysql表,包含URL、标题和描述列。有600多万行,每个URL列都有一个来自web的URL。现在我需要为表中的每个url添加标题和元描述。我下载了dmoz数据库,并从那里得到了我能得到的任何标题和描述,完成了部分工作,但我还有几百万个url。我知道这将是一个漫长的过程,我正试图找出最快的方法 我有以下使用CURL获取标题和Meta的代码:来自url的描述,但我不确定如何最好地利用php来尽快完成工作。我想我应该先将URL导出到一个文本文件中,这样我们就可以将查找保存到数据库中,但我不

我有一个Mysql表,包含URL、标题和描述列。有600多万行,每个URL列都有一个来自web的URL。现在我需要为表中的每个url添加标题和元描述。我下载了dmoz数据库,并从那里得到了我能得到的任何标题和描述,完成了部分工作,但我还有几百万个url。我知道这将是一个漫长的过程,我正试图找出最快的方法

我有以下使用CURL获取标题和Meta的代码:来自url的描述,但我不确定如何最好地利用php来尽快完成工作。我想我应该先将URL导出到一个文本文件中,这样我们就可以将查找保存到数据库中,但我不知道如何从那里开始。我有一个专用服务器(E3-1230V2,32 GB)专门用于此项工作,因此电源在那里,问题是如何最好地使用它

感谢您的任何建议

以下是CURL代码:

function get_info($url)
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$html = get_info($url);

$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');
$title = $nodes->item(0)->nodeValue;

$metas = $doc->getElementsByTagName('meta');

for ($i = 0; $i < $metas->length; $i++)
{
$meta = $metas->item($i);
if($meta->getAttribute('name') == 'description')
$description = $meta->getAttribute('content');

insert into table SET Title ='".$title."', Description = '".$description."'
函数获取信息($url)
{
$ch=curl_init();
curl_setopt($ch,CURLOPT_头,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$data=curl\u exec($ch);
卷曲关闭($ch);
返回$data;
}
$html=获取信息($url);
$doc=新的DOMDocument();
@$doc->loadHTML($html);
$nodes=$doc->getElementsByTagName('title');
$title=$nodes->item(0)->nodeValue;
$metas=$doc->getElementsByTagName('meta');
对于($i=0;$i<$metas->length;$i++)
{
$meta=$metas->item($i);
如果($meta->getAttribute('name')=='description')
$description=$meta->getAttribute('content');
插入到表集合Title='“$Title.”,Description='“$Description.”

我认为大部分时间都是通过HTTP与远程服务器交互,而不是与本地数据库交互,因此您可能可以通过在并行运行的多个进程之间分配工作来加快进程。然后,您需要运行所需的尽可能多的进程,以完全利用您的网络带宽。

您是否考虑过以下公司:t销售web-crawling-as-a-service?除了每小时获取数万个URL外,获取标题和元标记将是他们能做的最简单的事情。搜索有一些指向此类公司的链接,我希望他们能够更快地完成,最终比你自己更便宜。

你考虑过这样的公司吗销售web-crawling-as-a-service?获取标题和元标记将是他们能做的最简单的事情之一,而不仅仅是每小时获取数万个URL。有一些与此类公司的链接,我希望他们能够更快地完成,并且最终比你自己更便宜。@AlisterBulman我实际上没有想到这一点,我这是一个好主意!你会碰巧知道任何一家你认为适合这份工作的公司吗?有这么多人!我以前使用过80legs.com的结果-它们列在Quora答案搜索的第一个结果上。@AlisterBulman我最终接受了你的建议!我希望你能添加你的评论作为一个答案所以我可以接受它作为这个问题的答案。