Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MLS RETS服务器_Php_Api_Rets_Mls - Fatal编程技术网

Php MLS RETS服务器

Php MLS RETS服务器,php,api,rets,mls,Php,Api,Rets,Mls,我正在从MLS RETS服务器下载财产图像。当我使用GetObject方法下载属性图像时,有时GetObject方法不返回成功参数,则图像不会在本地服务器上下载。有什么解决办法吗 这是我的密码: $photos = $rets->GetObject("Property", "Photo", $idata['propertymlsid'], "*", 0); foreach ($photos as $photo) { $imgval=

我正在从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部分下载图像。

不幸的是,RETS协议不是为处理图像而设计的,整个过程中有很多陷阱

  • 删除数据库中的项目时,RETS协议无法反映该更改。对于列表而言,这是一个非常罕见的事件,但对于图像而言则不然。在任何一种情况下,都存在一个错误,即请求的对象未找到或不存在。换句话说,您必须假设对象已被删除,并且必须更新自己的记录

  • 代理经常更新图像,并且可能已删除或更改图像顺序

  • 图像下载过程是双重的。a) 您必须首先获取元数据记录,然后b)使用
    GetObject
    获取图像本身。但是,在此期间,代理可能已删除该图像

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

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


    如果您的流程整体正常,并且缺少一个图像,那么它很可能会永远消失。理论上,您应该运行第二个进程并尝试获取实际的元数据。如果没有返回,您可以放心地假设此图像的记录已丢失。

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


    只需删除您的
    else
    语句。

    请发布您的代码。看起来您的GetObject查询是正确的。只有照片['Success']为真时,才能下载照片。如果为false,它将转到else块。在这种情况下,您可能需要从$photo['ReplyCode']记录错误代码。请参阅文档:但您说有时它不会返回成功?它多久工作一次?