1

私のphpコードは正しいようです(ブロブストレージと通信する部分)。

        //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 Web サイトにアップロードすると、画像が破損することが多く、画像が表示されるたびに「ページを更新する」必要があります。これは、画像が表示されるはずの div の要素の検査をクリックした後、画像へのリンクが正しいにもかかわらずです。

私は 3 か月の試用版から azure の Web サイトの "共有バージョン" を使用しています。PHP のバージョンは、.net フレームワークとともに、私のローカル マシンとまったく同じです。

なぜこれが起こっているのか誰にも分かりますか?

ログを確認しましたが、役に立ちません。

解決:

BLOB ストレージと Azure Web サイトで設定された時刻に遅延があるようです。

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

最初の行に -60 を追加します。そして、それはうまくいくはずです。

4

1 に答える 1

1

あなた自身の質問に答えたようです。コンピューティング ノードとストレージ ノード間のクロック ドリフトと時間同期のため、遅延はそれほど大きくありません。リンクを機能させたい時刻の 1 ~ 2 分前に開始時間を設定することを常にお勧めします (リンクを「今すぐ」機能させるつもりであると仮定した場合)。開始時間をさかのぼっても害はありません。

于 2013-05-02T17:40:15.000 に答える