我们有大约20个具有各种wordpress项目的测试站点,我有一个工作脚本来提取博客的名称并将其添加到我们用来存储大量信息的内部站点。
<?php
libxml_use_internal_errors(true);
$c = file_get_contents("http://test1.company.com");
$d = new DomDocument();
$d->loadHTML($c);
$xp = new domxpath($d);
foreach ($xp->query("//meta[@property='og:site_name']") as $el) {
echo $el->getAttribute("content");
}
?>
它工作得很好我设置它的方式只是非常慢,当我从所有20个网站拉取信息。我想知道是否有办法优化其提取信息的方式?
答案 0 :(得分:1)
使用new DomDocument
加载文档会很慢。想象一下,你告诉别人为你记住一本书,你真正关心的是页面的标题。你可以让他们为你能得到答案的事情做很多工作。
当您将内容作为原始字符串接收时,在其上运行preg_match
以提取值,应该相当快,特别是因为您知道它是og:site_name
元标记的一部分
我希望这有帮助!
<强>更新强>
我还会更进一步,只检索前1000个字符,这样您就不会拉入整个文档。由于您正在对其进行正则表达式搜索,因此您可以绕过所有XML解析。
如果您需要获取更多信息,那么您可能无法拉动整个文档。
以下是获取前1000个字符的示例:
file_get_contents('./people.txt', NULL, NULL, 0, 1000);
最后两个参数是offset
和max length
。您希望从第一个字符(0
)开始,仅获取1000
个字节/字符。