2015-12-01 61 views
1

我有我的服務器上的350多個圖像的副本,當一個人試圖查看一個,如果它超過5分鐘,我希望我的服務器與另一個網站檢查我是從哪個鏡像數據(他們堅持我鏡像而不是盜鏈)並獲得最新的副本。有關如何做到這一點的任何想法?我可以做一個cron腳本並獲得所有的圖像,但是這樣做存在問題(我的主機限制我每15分鐘一次,我將不得不獲取很多圖像,我的用戶可能會或可能會不實際查看。)如何判斷何時獲取新圖像?

我想應該有一種方法來在PHP中這樣做,但我不知道我會在哪裏開始。

+0

一個選項使列日期字段之一,它與現在相比較()當一個人想要查看一個。 –

+0

我可以檢查圖像統計信息,並查看它的上次更新/創建時間。我不知道如何調用這個腳本,因爲圖像是由用戶動態加載的,所以主頁的php頁面不知道哪個是加載的。 – Brandan

回答

2

您可以通過php腳本來提供圖像,以便在顯示圖像之前進行必要的檢查。

<img src="/index.php/image-name.jpg"> 

下面是支票

// get the image name from the uri 
$image = explode("/", $_SERVER['REQUEST_URI'])[2]; 
// check if the image exists 
if (is_file($image)) { 
    // get the file age 
    $age = filemtime($image); 
    if ($age < time() - (60*5)) { // 5 mins old 
     // file too old so check for new one 
      // do your check and serve the appropriate image 
    } 
    else 
    { 
     // get the image and serve it to the user 
     $fp = fopen($image, 'rb'); 
     // send the right headers 
     header("Content-Type: image/jpg"); 
     header("Content-Length: " . filesize($image)); 
     // dump the picture and stop the script 
     fpassthru($fp); 
     exit(); 
    } 
} 
else 
{ 
    // handle error 
} 
+0

'$ image = explode(「/」,$ _SERVER ['REQUEST_URI'])[2];'花了我一段時間來調試該行。 [2]導致了這個問題。把它放在第二行,一切都很完美。 – Brandan

1

您可以在您的項目中應用ajax。 使用ajax每5分鐘致電您的服務器並刷新您的內容。 總之; AJAX是關於在後臺加載數據並將其顯示在網頁上,而無需重新加載整個頁面。