2015-09-28 74 views
2

我正在從MLS RETS服務器下載屬性圖像。當我使用GetObject方法下載屬性圖像時,有時Getobject方法不會返回成功參數,則圖像不會在本地服務器上下載。有任何解決方案嗎?MLS RETS服務器

這裏是我的代碼:

$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. 
     } 

    } 

請通過代碼。我想在上面的代碼的其他部分下載圖像。

+0

請發佈您的代碼 –

+0

看起來您的GetObject查詢是正確的。如果Photo ['Success']爲true,則只能下載該照片。如果爲false,則會轉到else塊。在這種情況下,您可能需要從$ photo ['ReplyCode']記錄錯誤代碼。請參閱文檔:https://github.com/troydavisson/PHRETS/wiki/GetObject –

回答

2

不幸的是,RETS協議並不適用於處理圖像,整個過程中還存在很多缺陷。

  1. 當刪除數據庫中的項目時,RETS協議無法反映該更改。對於列表這是一個非常罕見的事件,但不是圖像。無論哪種方式,都只有一個錯誤,即請求的對象沒有找到或不存在。換句話說,您必須假定該對象已被刪除,並且您必須更新自己的記錄。

  2. 圖像經常被代理更新,可能已被刪除或更改順序。

  3. 圖像下載過程是雙重的。 a)您必須首先獲取元數據記錄,然後b)使用GetObject的圖像本身。但是,與此同時,代理可能已刪除圖像。

  4. 根據從哪裏獲取數據,可能會在兩個事件之間產生大量延遲。例如,IDX通常是輔助數據庫,而不是從MLS本身訪問RETS饋送。

因此,底線你的代碼可能是好的,但所請求的圖像實際上已被刪除,因爲你請求該圖像的元數據。

如果您的過程總體上有效,並且缺少圖像,它可能會很好地消失。理論上你應該運行第二個進程並嘗試獲取實際的元數據。如果沒有回報,那麼您可以放心地假設該圖像的記錄已經消失。

+0

但是你有時說它不會成功?它多久工作一次? –

1

一些房地產委員會允許代理上傳損壞的照片,甚至無效的文件(如PDF文件)。房地產經紀人犯的這些錯誤錯誤地更新了RETS訂閱源,以指示存在有效的照片,但是當您嘗試下載它時,它會失敗。

只需刪除您的else聲明。

+0

謝謝你的寶貴迴應! –