2015-12-01 4 views
1

У меня есть копия более 350 изображений на моем терминале, когда человек пытается ее просмотреть, если мне больше 5 минут, я хочу, чтобы мой сердитый проверил с другим веб-сайтом, на котором я отравляю данные (они настаивают на меня зеркалирование вместо hotlinking) и получите самую новую копию. Любые мысли о том, как это сделать?Как узнать, когда нужно получить новое изображение?

Я могу сделать 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 в своем проекте. вызовите ваш сервер каждые 5 минут, используя ajax и обновите свой контент. Короче говоря; AJAX - это загрузка данных в фоновом режиме и отображение их на веб-странице без перезагрузки всей страницы.