Показать сообщение отдельно
Старый 18.05.2009, 00:45   #2
Аватар для Skald
Skald Skald вне форума
Администратор
Сначала надо определиться что хотелось бы получить от трекера?
Как мне кажется, это:
  1. Производительность.
  2. Функциональность.
  3. Универсальность.
  4. Расширяемость.
Производительность:
Самое ресурсоемкое место любого трекера на базе PHP - это аннонсер(скрейп), и иногда некоторые части фронтэнда. С фронтэндом у vBulletin нет никаких проблем - наверное один из самых оттюненных для производительности движков форумов на PHP, но вот с аннонсером при достижении некоторого количества пиров - 100% будут проблемы. В зависимости от конфигурации сервера - число может довольно сильно колебаться, но есть данные что на выделенном сервере 100К пиров 400 пользователей онлайн нагрузка юникс сервера около единицы. А к примеру VDS с 20К пиров при тех же 400 онлайн - юникс нагрузка уже около 4.
Основная проблема проблема PHP аннонсеров - это PHP :) А именно - первая проблема - PHP все-таки не самый быстрый скриптовый язык, а обрабатывать надо от десятка до нескольких сотен запросов в сек (аннонс + скрейп). Вторая не возможность нормально хранить данные между запросами, как следствие постоянное дерганье базы MySQL.
Решением проблемы производительности может стать любой другой аннонсер, например бинарник xbtt, написанный на с++. Но у этого анносера есть несколько недостатков, это:
функциональность - базовый функционал очень мал, и программа ничего не знает о vb,
совместимость и универсальность - т.к. это бинарник - пойдет не на всех хостингах, программу нужно компилировать и она требует довольно много библиотек и иногда есть проблемы в момент сборки - как результат невозможность сборки.

Добавлено через 13 секунд
Функциональность:
Я могу реализовать практически любой функционал трекера на PHP, LUA вот с другими языками посложнее будет. Как следствие правильно модифицировать исходник бинарника и добавить нужный функционал я не могу. В версии 1.0 я отталкивался от последней версии бинарника оригинального VBTT, но т.к. я не мог изменить код - это сильно тормозило разработку и постоянно приходилось придумывать костыли на PHP для замены того функционала, что по идее должен был делать бинарник. Со временем это сильно усложнило код и мне пришлось полностью отказаться от поддержки бинарника. Есть еще проблемы с бинарником, но это уже для отдельного раздела и для тех кто захочет его модернизировать (надеюсь что такие будут :))

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

Добавлено через 9 минут
Расширяемость:
Проблем с расширяемостью у vB практически нет. Существует мощная система хуков для интеграции стороннего кода.
Подобные хуки я добавлю в VBTT. Это нужно чтобы не захламлять код редко используемыми фичами и экзотическими функциями.
Поэтому каждый желающий при желании сможет дописать свой функционал и не надо ничего будет править в коде чтобы заработал какой-либо дополнительный мод. И не должно быть потом проблем при обновлении, т.к. хуки скорее всего будут только добавляться, а удаляться только в крайнем случае - при переписывании большой части кода
Ответить с цитированием