libraries/cache.php - BugFix

application/libraries/cache.php

Выдержка из комментария для этого фикса на собственном проекте:

> //
> Исправлен баг с подвисанием при вызове методов cache->cache_file (подсчет количества файлов в кэше) и cache->delete_all (удаление всех файлов из кэша);
проблема замечена при:
> * добавлении/сохранении публикации
> * сохранении категории
> * сохранении глобальных настроек
> * загрузке страницы кэша (меню Система -> Кэш)
> 
> Причина оказалась в том, что внутри указанных методов php-функция readdir по ошибке вызывалась кроме каталогов еще и на некоторых файлах. Неправильно было составлено условие отсева файлов - просачивались те, у которых в имени не было точки и префикса "cache_". На дескрипторах файлов функция readdir возвращала NULL, а в условии цикла while было точное сравнение на идентичность: (false !== ($file = readdir($handle))), из-за чего возникало зацикливание.
> 
> Также не была реализована стандартная проверка имени на каталог (php-функция is_dir) и на валидность возвращенного php-функцией opendir дескриптора объекта файловой системы.
> 
> Решение: везде перед началом пробега по каталогу (readdir) добавлены проверка пути на каталог (is_dir) и проверка на валидность полученного дескриптора.
> //


Изначально баг заявлен в теме:
http://forum.imagecms.net/viewtopic.php?id=2595