Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Здравствуйте!
В целях самообразования разбираюсь с кодом fluxbb. Возник вопрос по загрузке кэшированных файлов.
На этапе работы common.php подключается скрипт cash.php, в котором объявляются функции для работы с кэшем, после чего вызывается функция генерации generate_config_cache();
С функцией generate_config_cache() всё ясно — извлекаем из БД настройки, формируем массив с настройками и генерируем данные для последующей записи в файл. Далее для записи в файл вызывается функция fluxbb_write_cache_file('cache_config.php', $content).
function fluxbb_write_cache_file($file, $content)
{
$fh = @fopen(FORUM_CACHE_DIR.$file, 'wb');
if (!$fh)
error('Unable to write cache file '.pun_htmlspecialchars($file).' to cache directory. Please make sure PHP has write access to the directory \''.pun_htmlspecialchars(FORUM_CACHE_DIR).'\'', __FILE__, __LINE__);
flock($fh, LOCK_EX);
ftruncate($fh, 0);
fwrite($fh, $content);
flock($fh, LOCK_UN);
fclose($fh);
fluxbb_invalidate_cached_file(FORUM_CACHE_DIR.$file);
}
Работа которой тоже ясна, но не пойму, зачем в конце функции вызывается функция удаления файла $file? Это же файл cache_config.php, в который функция записывала данные $content.
function fluxbb_invalidate_cached_file($file)
{
if (function_exists('opcache_invalidate'))
opcache_invalidate($file, true);
elseif (function_exists('apc_delete_file'))
@apc_delete_file($file);
}
Offline
@noobie, функция fluxbb_invalidate_cached_file() нужна для правильного обновления закешированных данных в OPcache и Alternative PHP Cache.
Моя сборка FluxBB 1.5, ForkBB · сообщество
Offline
FluxBB использует для кеширования файлы php. И его опкод-кешеры бывает очень крепко кешируют. (кешируют кеш ) Файл уже поменялся, а опкод-кешер не понимает этого, исполняет старую версию.
Эти функции реально НЕ удаляют файл, они сигналят, что старый кеш уже неактуален.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Offline
Страницы 1