MLS RETS服务器

时间:2015-09-28 09:16:27

标签: php api rets mls

我正在从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.   
        } 

    }

请仔细阅读代码。我想在上面代码的其他部分下载图像。

2 个答案:

答案 0 :(得分:3)

不幸的是,RETS协议不是用于处理图像的,整个过程存在很多陷阱。

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

  2. 代理商经常更新图片,可能已删除或更改订单。

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

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

  5. 所以底线你的代码可能还可以,但是因为你请求了该图像的元数据,所请求的图像实际上已被删除。

    如果您的整个过程有效且缺少图像,那么它可能会很好地消失。从理论上讲,您应该运行第二个进程并尝试获取实际的元数据。如果没有返回也可以安全地假设此图像的记录消失了。

答案 1 :(得分:1)

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

只需删除您的else声明。