【问题标题】:MLS RETS ServerMLS RETS 服务器
【发布时间】:2015-09-28 09:16:27
【问题描述】:

我正在从 MLS RETS 服务器下载房产图片。当我使用GetObject 方法下载属性图像时,有时Getobject 方法不返回成功参数,然后图像不会下载到本地服务器上。有解决办法吗?

这是我的代码:

   $photos = $rets->GetObject("Property", "Photo", $idata['propertymlsid'], "*", 0);        
    foreach ($photos as $photo) 
    {

        $imgval="";
        $imgval="{$photo['Content-ID']}-{$photo['Object-ID']}.jpg";
        if ($photo['Success'] == true) 
        {
        @file_put_contents("photos/{$photo['Content-ID']}-{$photo['Object-ID']}.jpg", $photo['Data']);
        @mysql_query("insert into tableName (pro_mlsid,photos_name,image_date)values('".$idata['propertymlsid']."','".$imgval."','".date('Y-m-d h:i:s')."')");   
        }else
        {
        // in this section i want to download image. please suggest what to do here? . i have record for this image in database for but could not download it.   
        } 

    }

请查看代码。我想在上面代码的 else 部分下载图片。

【问题讨论】:

  • 请发布您的代码
  • 看起来您的 GetObject 查询是正确的。只有在 Photo['Success'] 为真时,您才能下载照片。如果为 false,它将转到 else 块。在这种情况下,您可能希望从 $photo['ReplyCode'] 记录错误代码。请参阅文档:github.com/troydavisson/PHRETS/wiki/GetObject

标签: php api rets mls


【解决方案1】:

不幸的是,RETS 协议不是为处理图像而设计的,整个过程存在很多缺陷。

  1. 删除数据库中的项目时,RETS 协议无法反映该更改。对于列表,这是一个非常罕见的事件,但对于图像来说不是。无论哪种方式,都只是一个错误,即未找到或不存在所请求的对象。换句话说,您必须假设该对象已被删除,并且您必须更新自己的记录。

  2. 图片由代理频繁更新,可能已被删除或更改顺序。

  3. 图像下载过程是双重的。 a) 您必须先获取元数据记录,然后 b) 使用 GetObject 获取图像本身。但是,与此同时,代理可能已经删除了图像。

  4. 根据您从何处获取数据,这两个事件之间可能存在大量延迟。例如,IDX 通常是辅助数据库,而不是从 MLS 本身访问 RETS 提要。

所以底线是您的代码可能没问题,但请求的图像实际上已被删除,因为您请求了该图像的元数据。

如果您的流程总体有效,但缺少图像,它很可能会一去不复返。理论上,您应该运行第二个进程并尝试获取实际的元数据。如果也没有返回,您可以放心地假设这张图片的记录已经消失。

【讨论】:

  • 但是你说有时候不返回成功?它多久工作一次?
【解决方案2】:

一些房地产委员会允许代理商上传损坏的照片,甚至是无效文件(如 PDF)。房地产经纪人犯的这些错误错误地更新了 RETS 提要以指示存在有效照片,但是当您尝试下载它时,它会失败。

只需删除您的 else 声明即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多