3

我想从 RETS 服务器下载所有房产列表,包括所有照片 URL。我正在使用 DMQL2 和 PHRETS 库。属性和照片对象存储在 RETS 服务器的不同表中。

要获取所有照片,我知道我可以下载属性列表,然后遍历每个属性并检索每个属性的照片,如下所示:

$results = $rets->Search($resource, $class, $query);
foreach ($results as $r) {
    $photos = $rets->GetObject('Property', 'Photo', $r->get('ListingID'), '*', 1);
    foreach ($photos as $p) {
        // Save the photo locations somewhere…
    }
}

这是非常慢的,因为有成千上万的属性。

是否可以通过加入属性和对象表(如 MySQL 中的 a )在单个查询中请求所有照片和属性LEFT JOIN

或者,有没有办法在一个请求中下载所有照片对象,这样我就可以使用它们的 ListingID 键将它们与属性相关联?

对于更快地获取所有数据还有其他建议吗?

4

2 回答 2

0

部分可能,但目前无法在单个查询中下载整个照片以及属性。

我们可以在单个查询中下载多个列表的图像。检查下面的示例查询。

$photos = $rets->GetObject("Property", "Photo", "12345,12346,12347", "*", 1);
foreach ($photos as $p) {
    $listingId = $p['Content-ID']; // save photo based on each listingIds
    //continue
}

这里第三个参数我们可以提供逗号分隔的listingIds。因此,您可以将listingIds 作为批次传递。

注意:仍然 MLS 保持提取速度。一些 MLS 板可能会根据要求临时增加带宽。在这段时间内尝试提取完整的图像。

于 2020-03-18T08:11:52.680 回答
-1

您可以一次下载所有照片。一些服务器还支持媒体资源和类,允许您获取列表或列表组的所有照片的 URL。如果您的服务器支持,我会使用它,因为它通常更快。

使用 phrets,我认为一次下载所有图像看起来像这样:

$photos = $rets->GetObject("Property", "Photo", $record[ListingID], "*", 1);

我从这个 SO 答案中复制了它:PHRets:使用 PHP 下载房地产列表照片

于 2019-12-09T18:56:31.720 回答