Проверьте, не изменился ли удаленный файл - PullRequest
2 голосов
/ 27 сентября 2011

Я использую модуль PHP cURL для извлечения метки времени удаленного файла через заголовки HTTP.Мне удалось получить метку времени модификации с помощью константы CURLOPT_FILETIME.Конечно, я делаю это для того, чтобы увидеть, изменился ли удаленный файл, не загружая его содержимое.

$ch = curl_init($url);  /* create URL handler */
curl_setopt($ch, CURLOPT_NOBODY, TRUE); /* don't retrieve body contents */
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); /* follow redirects */
curl_setopt($ch, CURLOPT_HEADER, FALSE); /* retrieve last modification time */
curl_setopt($ch, CURLOPT_FILETIME, TRUE); /* get timestamp */
$res = curl_exec($ch);
$timestamp = curl_getinfo($ch, CURLINFO_FILETIME);
curl_close($ch);

Какой, по вашему мнению, лучший способ проверить, изменился ли удаленный файл?Должен ли я идти только с отметкой времени?Или есть какие-то другие умные варианты, которые не приходили мне в голову?!

1 Ответ

3 голосов
/ 04 января 2012

Ваш подход выглядит хорошо для поиска значения времени последнего изменения.(Необходимо следить за возвратом -1 для CURLINFO_FILETIME, что означает, что значение заголовка Last-Modified не было идентифицировано.)

Вы можете сохранить возвращенное время, и в будущих проверках посмотрите, изменилось ли оно.Если он изменен, извлеките новый файл с помощью Curl.

Другой вариант - сохранить заголовки ETag и Last-Modified, а затем использовать условный запрос, чтобы получить изображение снова.Это будет сложнее, но вы будете каждый раз сохранять дополнительный запрос HEAD.Вы можете увидеть некоторые детали в этом вопросе SO: if-Modified-Since против if-none-match .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...