PHP:提高从Entrez数据库(Pubmed)返回网格术语的速度

PHP:提高从Entrez数据库(Pubmed)返回网格术语的速度,php,performance,pubmed,Php,Performance,Pubmed,我想从Pubmed数据库中的搜索结果中提取网格词。我正在使用php 我制作了一个脚本,但很慢。它打开每篇文章,解析XML并检索网格术语。fopen功能是慢的部分 $url= $base."efetch.fcgi?db=$db&id=$id&rettype=abstract"; $opts = array( 'http' => array( 'method' => "GET", 'header' => "User-Agent:MyAge

我想从Pubmed数据库中的搜索结果中提取网格词。我正在使用php

我制作了一个脚本,但很慢。它打开每篇文章,解析XML并检索网格术语。fopen功能是慢的部分

$url= $base."efetch.fcgi?db=$db&id=$id&rettype=abstract";    
$opts = array(
  'http' => array(
    'method' => "GET",
    'header' => "User-Agent:MyAgent/1.0\r\n"
  )
);
$context = stream_context_create($opts);
$fp = fopen($url,'r',false,$context);
$output=stream_get_contents($fp);
脚本会为每篇文章打开一个大xml文件:

有没有办法只检索网格术语,或者至少检索xml的一小部分?还是只加载文件的一半

多谢各位

更新: 我有些进步。使用带有retmode=text和rettype=medline的efetch将一个文件的下载量从15KB减少到4kb。我还捆绑了所有下载,以减少请求量

现在加载500个结果需要4.8秒

我还是想快点


有人有什么建议吗?

我不知道你的极限和目标是什么。但是如果你要查询整个数据库,那么我会尝试另一种方法。查询数据库以列出每个已知网格术语的文章。据我所知,只有一个查询,所以您需要发送不到30000个查询来获得整个数据库的结果。您可以使用