2013-05-02 21 views
1

我的php代碼似乎正確(與blob存儲對話的部分)。從Azure網站中的blob存儲中獲取破損的圖像

 //talk to blob storage, get links, based on file name 

       $storageClient = $this->azure->get_blob_storage(); 

foreach($result as $photo) 
{ 
$sharedAccessUrl[] = $storageClient->generateSharedAccessUrl(
       'container', 
       $photo['File'], 
       'b', 
       'r', 
       $storageClient ->isoDate(time()), 
       $storageClient ->isoDate(time() + 3000) 
      ); 


} 

     foreach($sharedAccessUrl as $item) 
     { 
    $pictures[] = $item; 
     } 

這得到所有的絕對URL鏈接,我然後將其存儲一個數組裏面,把它傳遞給查看和檢索圖像。像這樣:

<img src="<?php echo $pictures[$i]; ?>" height=100px width="100px"> 

(where pictures[$i] = http://azure blobstorage etc... 

在我的本地機器上,每當我刷新頁面,或者在有圖像的頁面上滑動時,它們都會加載正常。但是,當我將應用上傳到Azure網站時,通常會出現損壞的圖像,並且每次圖像出現時都需要「刷新頁面」。這是儘管鏈接到圖像是正確的,我點擊檢查元素上的圖像假設出現的div。

我正在使用來自3個月試用版的azure網站的「共享版本」。 PHP版本與我的本地機器以及.net框架完全相同。

有沒有人知道爲什麼會發生這種情況?

我檢查了日誌,但它們沒有幫助。

解決方案:

似乎有與設定在Blob存儲和Azure網站的時間延遲。

  $storageClient ->isoDate(time()-60), 
      $storageClient ->isoDate(time() + 3000) 

將-60添加到第一行。它應該工作。

回答

1

看起來像你回答自己的問題。它不是那麼多延遲因爲它是時鐘漂移和計算節點和存儲節點之間的時間同步。在你希望鏈接開​​始工作之前(假設你打算讓鏈接「現在」工作),將開始時間設置爲一兩分鐘總是一個好主意。無損傷啓動時間。