Приступил к первым тестам версии на бд и сразу же решил оценить производительность - бд всегда работает медленнее файлов. Генерация без кеша страницы занимает при одном посте 13 запросов, самым долгим из которых оказался установка часового пояса. Закомментировал этот участок - часовой пояс в бд особо ни на что не влияет. Для сравнения цифры - на файлах генерация занимает около 0.03 секунды, на бд 0.09. После ликвидации ошибок надо будет еще подтестировать на большом сайте - тесты идут на одном посте и одном комменте.

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

Также встал вопрос о названиях секций в теме, и соответствующем доступе к ним из класса на php. Шаблоны темы организованы в виде дерева, когда как я пока сделал в классе в виде массива. Думаю переделать это все под примерно следующий стиль:


$theme = ttheme::instance();
$tml = $theme->excerpts->files->image;

Проблема была в вложенных объектах - что если требуется не объект, а строка. Для этого есть спецметод в php - __tostring();