Что есть работающего в данный момент

 
+
-
edit
 

Balancer

администратор
★★★★★

Сейчас имеется полнофункциональная CMS (система управления контентом), частично интегрированная с форумом iPB. Особенности:
  • Релизована объектная модель на базе MySQL. Движок выполнен в виде внешнего драйвера (хотя и весьма массивного) на двух уровнях:
    • MySQL-интерфейс для простейших операций (вставить значение, извлечь значение и т.п.) - объём файла всего 258 строк. Фактически, переход на иные способы хранения (другие БД, plain/text файлы и т.п.) выполняется, в основном, его заменой. чтобы проще ссылаться - имя файла DataBase.php
    • Интерфейс моей CMS - надстройка над DataBase.php, реализующая объектную модель. Т.е. для каждого объекта (страница, картинка и т.п.) есть набор атрибутов (ширина картинки, дата модификации страницы, URL страницы, описание, список родителей, список детей и т.п. - всего уже десятки параметров). 464 строки. Требуется доработка, т.к. есть несколько прямых запросов к MySQL минуя DataBase.php. Имя файла - DataBaseHTS.php (HTS - давнее обозначение моего формата разметки, ещё когда он был локальным, несерверным. HyperText Source)
  • Модуль кеширования Cache.php - позволяет сохранять готовые наборы данных для быстрого их последующего извлечения. Сейчас хранит в MySQL, но легко может быть переписан на любой формат. Всего 60 строк.
  • Модуль кеширования в памяти global-data.php - 40 строк. Используется для временного хранения данных модулями DataBase.php и DataBaseHTS.php для упрощения работы готовых скриптов - можно не задумываясь о временном хранении каждый раз извлекать нужные данные "из БД" (на самом деле, при повторном вызове из текущего скрипта - будет задействовано уже считанное значение)
  • lcml.php - большая и гибкая система гипертекстовой разметки исходников. Т.е. преобразование HTS и BB-кода в HTML. Полноценный парсер, не регекспы. Соответственно, полноценно отрабатывает вложения, использование разметки в параметрах разметки и т.п. Сам файл 304 строки. Только парсер. Сами обработчики разметки подключаются из внешних, автоматически подключающихся файлов. Поддерживает следующие типы файлов:
    • Файлы предварительной обработки, перед отработкой тэгов (скажем, преобразовать URL в квадратных скобках в нормальный вызов URL-тэга и т.п.) Порядок исполнения файлов может задаваться по их именам (обрабатываются по алфавиту)
    • Файлы обработки тэгов двух форматов:
      • Классический BB-код, как однотэговый ( [ br ] ), так и двухтэговый ( [ b ] ... [ /b ])
      • Мой старый HTS-формат (#a Имя автора и т.п.)
    • Файлы постобработки. Например, заменить все оставшиеся незаменёнными URL'ы на автоматические ссылки, с утягиванием их с сервера и т.п.


Обработчики тэгов - ну, там много есть интересных решений. Например, автоматический аплоад картинок на страницу (используешь тэг с картинкой и если при компиляции картинка не была найдена, будет предложена её загрузка).

lcml-модуль написан довольно давно и часть кода сейчас довольно неряшлива, потребуется оптимизация и перепись (хотя недавно уже оптимизировал, повысив быстродействие раз в 50 :D)

  • Система показа страниц пока совершенно виртуальная. Т.е. идёт rewrite для всех URL и перехват отсутствующих URL и перевод их в скрипт показа страниц. Тот на основе имеющегося URI выдёргивает нужную страницу из БД, оттуда же извлекает шаблон (шаблоны - обычные страницы системы), парсит шаблон через Smarty (с кешированием) и выдаёт в браузер.


Не смотря на реально большое число запросов к БД (в среднем - 40..60 против 10..12 у этого форума, скажем) запросы все простые и время генерации страницы обычно в несколько раз меньше, чем время генерации страницы форума.

Реально систему в работе можно увидеть на Авиабаза или Сайт расходящихся тропок // Balancer.Ru :)

Наверняка много чего ещё упустил - добавлю позже :)
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru