АдминистраторПользователь №: 42 Сообщений: 125
| Исходя из прежних идей и разработок, мною было принято решение о создании действительно "движка" на PHP. Что-то вроде мини операционной системы. Со своим ядром, с своими правилами инициализации, со своей коллекцией библиотек, модулей, блоков, различных приложений.
Как раз коллекция дополнений к "движку" и будет построена по принципу системы ports(FreeBSD)/portage(Gentoo).
PHP приложения/модули/блоки будут устанавливаться парой кликов из админ-панели, собирая при этом все нужные им скрипты.
Дополнения написанные на компилируемых языках будут собираться с помощью Unix компиляторов.
Будет создана база данных дополнений к движку.
По умолчанию на офф.сайте будет доступен лишь скрипт конфигурации и инсталляции движка. Он предоставит возможность сконфигурировать нужный именно Вам набор компонентов или предоставит некоторые стандартные набор, примерно как сборка ядра Unix-native операционных систем.
На базе данного движка можно будет построить как простой сайт, так и панель управления сервером.
Данный движок будет разрабатываться в для 4-х ОС - FreeBSD, Linux (Gentoo, Red Hat Enterprice, Suse, Debian, Ubuntu), CentOS и Solaris.
Платформа Windows поддерживаться не будет.
О сроках разработки сказать пока ничего не могу, проект большой и довольно сложный, но с вашей поддержкой все будет гораздо быстрее :)
О цене - скорее всего OpenSource/Freeware.
Просьба.
Задавайте вопросы, вносите предложения, ведь из них могут вырасти новые идеи.
Структура каталогов xBirdEngine
Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| /bin/ - бинарные файлы
/boot/ - ядро
/etc/conf.d/ - конфигурационные файлы
/etc/env.d/ - предопределенные константы и переменные
/etc/init.d/ - скрипты инициализации ядра и системы
/lib/ - каталог для библиотек
/lib/pear - PEAR
/lib/zend - Zend Framework
/lib/sys - Системные библиотеки
/root/ - каталог для скриптов командного центра системы(админ-панели)
/tmp/ - временнные файлы
/var/log - логи
/usr/modules/ - модули
/usr/templates/ - шаблоны
/usr/xportage/ - коллекция build файлов для модулей|классов|библиотек|компонентов ядра |
Все каталоги будут устанавливаться при загрузке ядра, сразу добавляется возможность переназначения всех каталогов кроме /boot/. Для этого в каталоге /boot лежит map файл - System.map.
Стандартный System.map
Код | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
[bin]
path = bin
[etc]
conf.d = conf.d
env.d = env.d
init.d = init.d
profile.d = profile.d
path = etc
[lib]
classes = classes
ext = ext
sys = sys
[root]
path = root
[tmp]
path = tmp
[usr]
modules = modules
path = usr
templates = templates
xportage = xportage
[var]
path = var
log = log
|
Схема работы ядра
Загрузчик -> Парсинг конфигурационных файлов -> Первичная сортировка входных данных -> Взаимосвязь с другим интерпретаторами и языками -> Передача управления парсеру Url(который в свою очередь должен будет передать управление модулю)
Пути в системе определяются ядром с помощью метода getSystemPath
Код | 1 2 3 4 5 6 7 8 9 10
|
/**
* Returns system path by default path
*
* @param string $Path
* @param string $ArrKey
* @return string
* example getSystemPath('etc/conf.d');
*/
|
На данный момент вся карта представляется как двумерный массив
Метод получает два параметра, первый - путь к каталогу исходя из стандартной системной карты, второй - опциональный - ключ для поиска, создан для рекурсии в данной функции и врядли пригодиться для других целей.
Пример использования
getSystemPath('etc/conf.d'); - выведет данные из карты - [etc][path]/[conf.d][value].
Исключения ядра xBirdEngine.
Исключения во всем "движке" будут делиться на 2 типа: исключения ядра(Kernel) и исключения пользователя(User).
Каждый тип будет делиться на под-типа. Исключения типа Kernel могут генерироваться только ядром системы. Для этих типов будут созданы свои обработчики исключений.
Обработчик исключений в ядре будет генерировать сообщение об ошибке, проверять доступен ли для записи каталог getSystemPath('var/log') . '/kernel/. Если в каталог писать можно, то он скидывает лог об ошибке в файл в этом каталоге и ставит флаг, для оповещения администратора, в противном случае пытается записать в /tmp/. Если же и это не удается - выводит ошибку в браузер.
У ядра будет свой реестр, куда оно будет записывать временные рабочие данные, возможно реестр будет созраняться на диск, и подключаться при последующей загрузке ядра.
Далее ядро будет в себе содержать стандартный KernelUrlParser для разбора Url командного центра, KernelCommandCenter - сам коммандный центр, KernelTplParser - обработчик шаблонов командного центра.
Все эти парсеры и обработчики не будут доступны для модулей.
Скоро
Скоро опубликую обзор работы системы xPortage.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно 20.04.2007 г. в 01:46:48 |
|