Дата истечения срока действия в виде атрибута файла или в отдельном файле для механизма кэширования - PullRequest
0 голосов
/ 02 марта 2010

Я создаю простую библиотеку кэширования на PHP. В настоящее время, когда я сохраняю значение, я создаю 2 файла: один, содержащий значение, и другой для хранения времени создания. Мне нужно надежное решение, и я не уверен, насколько безопасно использовать атрибуты даты файла. Как вы думаете, безопасно ли использовать атрибут даты файла для срока действия, вместо того, чтобы хранить его в отдельном файле?

Это будет зависеть от ОС? Я хочу, чтобы моя библиотека в Windows и Linux работала одинаково.

Ответы [ 2 ]

1 голос
/ 02 марта 2010

В небольшой функции кэширования я использую функцию filemtime, которая дает время, когда файл был изменен. Он отлично работал как на Windows, так и на Linux. И не забудьте использовать clearstatcache() перед использованием filemtime, поскольку его результаты кэшируются.

function in_cache($expires_in_secs, $filename){
    clearstatcache(); // Clear file status cache held by PHP

    /* if (file_exists($filename) and  filesize($filename) > 0 ) {  */
    if (file_exists($filename) ) {
        if( time() >= (filemtime($filename) + $expires_in_secs) ){  return false; }
        else { return true; }
    }
    else { return false; }
}
0 голосов
/ 02 марта 2010

В Linux существует три разных момента времени, связанных с файлом: время создания, время модификации и время доступа. Понятно, что использование времени доступа было бы неуместно, но использование времени создания должно подойти для ваших целей. Однако вы всегда рискуете, чтобы пользователь в системе добавил, удалил или переместил файлы в вашей папке кэша.

Другой подход заключается в использовании одного файла для хранения списка или хэша всех имен файлов и их дат. Это означает, что вы сохраняете каждый файл один раз и добавляете только один другой файл для хранения информации об истечении срока действия.

Вы можете использовать функцию serialize () для простого сохранения и извлечения информационного файла при необходимости.

http://php.net/manual/en/function.serialize.php

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