Flat |
Отправлено: 25 марта 2019 — 06:41 • Тема: Перспективы дальнейшего развития • Форум: Новости |
Ответов: 117 Просмотров: 0
|
Heavenanvil пишет:вопрос уже больше в том, нужно ли вообще дальше пилить движок?
В наше время использовать движок на mysql вообще не проблема
Как по мне, - надо продолжать. Соц сети никогда не заменят тематических форумов. Они просто для этого не предназначены, они предназначены для оглупления, а не для образования. Форум так устроен, что есть отдельная тема, к которой можно всегда удобно вернуться. То, что в соц-сетях сидит большинство, то это не значит того, что меньшинство, которым нравится профессиональное обсуждение какого-то вопроса должны быть обделены вниманием. А сейчас с каждым днём всё меньше людей которые разбираются в веб-технологиях. Дайте ему форум на мускуле, и не дай бог что-то там заглючит с базой, он останется один на один с большими проблемами. Это возможно вы такие продвинутые, но большинство нет, им нужен понятный движок, который можно было бы легко модифицировать и ремонтировать.
Есть машинки, которые ремонтируют сами, и, кстати получают от этого процесса удовольствие, а есть которые ремонтируют в автосервисах за большие бабки, каждому своё, и каждому по его карману и желаниям.
Количество форумов, которые созданы именно на плоских файлах очень велико, как у нас, так и у "них". Вопрос: почему люди выбирают более простую и надёжную вещь вместо сложной и ненадёжной? Посмотрите: вобла начинает глючить при определённом количестве пользователей, замечено на многих форумах, и это проблемы именно с базой, именно там косяки..
Файловый движок ПО ОПРЕДЕЛЕНИЮ быстрее любой СУБД. СУБД может выиграть иногда при поиске и выборке отдельных полей или значений, но если правильно организовать файловый движок, то по скорости он не только не уступит, а во многом переплюнет любой мускул, и это аксиома. Файловая система сама по себе иерархическая база данных.
Heavenanvil пишет:Или создать что-то новое, с использованием современных технологий. Даже готов поучаствовать.
ExBB это чисто файловый движок! Это его фишка! И ему нет конкурентов в своей нише! Он им и должен остаться! Он никогда не переплюнет гигантов на mysql, неужели не понятно? Ну давайте применим какой-нибудь фреймворк, а поверх этого фреймворка ещё один, а поверх... Но давайте подумаем: что из этого выйдет? Из этого выйдет ужасно медленный, глючный, пухлый продукт, который никому не нужен в силу того, что он будет непонятен, непрозрачен и пр. |
Flat |
Отправлено: 25 марта 2019 — 04:17 • Тема: Перспективы дальнейшего развития • Форум: Новости |
Ответов: 117 Просмотров: 0
|
NordWest пишет:Моё мнение было и остается неизменным - нужно было давным давно заниматься не так называемым "развитием" ExBB, а банальным наведением порядка в том движке, который был, устранением кучи мелких недочётов. А самое главное нужно как воздух перестроить структуру ядра таким образом, что бы платные моды устанавливались в отдельные папки и не смешиваись с ядром - без этого поддержка движка это всегда пляски с бубном.
Полностью, с этим согласен!
В тупик упёрлись потому, что изначально стараниями Маркуса или кого ещё, но форум двинулся в неверном направлении.
До сих пор не решены многие проблемы в самом ядре. К примеру онлайн статистика вообще никуда не годится. У вас тут по 1000 гостей накручивается, как и на других форумах на этом движке, хотя по факту раз в 100 меньше, а это потому, что не ведётся учёт уникальных гостей. Функция фильтрации ботов устарела. Больно видеть этот вопиющий самообман.. Бот заходит, неотфильтровывается, индексирует сотню, другую страниц и вот вам уже 200 гостей... Надо было элементарно через сессии сделать. исправлю по мере сил, это нетрудно и недолго.
Далее, уменьшить количество кукисов. Оно сейчас зашкаливает, а ведь у каждого браузера свой лимит на количество кук с одного домена. И как правило он не превышает 10..
Команда разбежалась по причинам того, что:
1) либо надо писать всё с нуля, а на это нужна команда.
2) либо надо менять код движка, а на это нужно время и желание, ведь отдачи в виде денег не будет. Я - фанатик, это моё хобби, ибо нравится мне этот движок, что ни говори..
Я за второй пункт. Сейчас этим плотно и занимаюсь. Надо привести код в порядок. Уйти от деления тем. Оптимизировать поиск - сейчас вообще он не фурычит, а если и фурычит то плохо. Создать единый реестр того, что к чему принадлежит в движке. Сейчас всё размазано по коду.
И всё вот уже у нас новая версия. А дальше будем наворачивать. Движок-то отличный несмотря на огрехи. Надо продолжать развитие в сторону упрощения кода и в сторону повышенного функционала и новых фич.
Новый движок НЕ НУЖЕН! Нужно доделать старый!!!
Столько труда вложено прошлыми разработчиками и это не должно пропасть в туне. Большая часть кода - рабочая, нормальная. Я-то знаю сколько времени уходит, чтобы написать и протестировать в боевых условиях даже небольшую часть кода. Программирование ужасно каторжная работа, по моему легче кирпичи таскать на стройке и в домино играть в обеденный перерыв. И за вредность никто приплачивать не собирается, а ведь сидеть за компом по 10 часов тоже не сахар, и зрение и гипдинамия и пр. постоянное напряжение мозгов тоже утомляет, это только в воображении далёких от программинга людей всё просто так само собой выходит, по щучьему веленью моему хотенью, а вреальности, терпение и труд, и самоотдача.. |
Flat |
Отправлено: 24 марта 2019 — 14:49 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Тут намедни, протестил одну задумку, которая, впрочем, у меня уже давненько так крутилась в голове, да и когда-то слегка тестилась. Так вот, протестил сейчас и сравнил скорость поиска и загрузки..
Предположим у нас имеется текстовая база подобного формата, для файла users.php:
CODE:
<?php die()?>
^#id:1#n:'admin'#m:'ffffff@mail.ru'#p:2$
^#id:2#n:'vasya'#m:'gggg@mail.ru'#p:2$
^#id:3#n:'kolya'#m:'bbbbb@mail.ru'#p:2$
^#id:4#n:'lena'#m:'xxxx@mail.ru'#p:2$
^ это начало записи;
$ это её конец;
# это начало идентификатора поля, после чего через : идёт значение.
Так вот, к чему это я.. А к тому, что если такую базу НЕ сериализовать и НЕ десиреализовать, или как-то по другому конвертировать в массив и обратно, то скорость загрузки вкупе со скоростью поиска поля/значения/записи, через строковые функции типа strpos, возрастает, не упадите со стула, ... в 100 - 500 раз...
И это без мечтаний о файлах прямого доступа.., без мечтаний о мускуле и пр..
И база такая сохраняет способность легко её править вручную. И весит она в 2-4 раз меньше..
Может быть вот оно, то самое, что разгонит этот движок до космических скоростей, и даст ему новое дыхание? Как вы думаете?
Пока буду тестировать, авось что-нибудь из этого и выйдет, а может быть и нет, но результаты меня впечатлили.
Хотя не для всякой базы это подойдёт. Подойдёт там, где не нужно разбивать в массив, а нужно только убедится в наличии значения какой-то записи, или получить отдельную запись или значение поля, а не все записи/поля. Например для поиска хорошо подойдёт. |
Flat |
Отправлено: 23 марта 2019 — 17:08 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Прикрутил новый формат. Теперь всё работает, загружается быстрее в 2 раза. поверил на файле размером 60 мегабайт. Мой формат загружает его 15 секунд, а сериализированный вообще не загружается, по всей видимости функция сериализации просто не расчитана на такие обьёмы..
По ходу пьесы выявились некоторые концептуальные промахи предыдущих разработчиков. Во-первых номер сообщения в теме это время создания сообщения. Что тут неправильно? Может возникнуть ситуация, когда в течении одной секунды два юзера запостят сообщения в одной и той же теме и получат одинаковый timestamp.. А это значит, что два сообщения получат одинковые номера со всеми вытекающими. Проблема более чем реальна.
Будем решать.
Зачем сохраняем на веки вечные ip юзера в записи сообщения? Ведь ip меняется каждый день. Зачем эту ненужную информацию хранить вечно? Это обычный мусор, одноразовый..
Далее, Номер темы уникален только внутри форума, а не внутри конференции. Это мягко говоря неправильно. Номер темы, как и номер форума, как и номер сообщения должны иметь уникальные для всего форума(конференции) id.. В этом случае мы легко можем переносить без излишних телодвижений всё куда угодно откуда угодно, при этом сохраняя все ссылки. Но это будет работать только в том случае, если у нас будет своеобразный реестр того, что чему принадлежит. Реестр где собрана информация об этом в одном единственном месте.
Хотелось бы реализовать возможность иметь ссылку на сообщение пользователя в цитате на него, ну и другие возможности. |
Flat |
Отправлено: 21 марта 2019 — 15:55 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
1Bot пишет:Зачем оставлять неделимыми темы?
Я имел в виду, как указывал выше, что темы не будут делиться на более мелкие части автоматически при достижения определённого размера, как сейчас.
Что касается формата данных, то я решил проблему хранения при помощи var_export. Перед сохранением, строка с масивом ужимается удалением ненужных переводов строк и пробелов. При этом файл весит меньше, чем сериализированный на примерно 30%. Пробелы в текстовых строках заменяются на неразрывный пробел. при этом, пользователи могут форматировать свой текст пробелами. Загрузка такого файла в 2 раза быстрее сериализированного. Естественно, что с неразрывными пробелами файл будет весить несколько больше, но это несущественно. главное обеспечим читабельность и ремонтнопригодность данного формата. |
Flat |
Отправлено: 21 марта 2019 — 14:41 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Xeх... а эти функции работают только с юникодом.. жаль.. |
Flat |
Отправлено: 21 марта 2019 — 09:13 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
1Bot пишет:Вы объединяете код и данные.
С функцией var_export возникли определённые проблемы. Массив в файле получается довольно большим(больше сериализированного на 50-30%) даже если убрать переводы строк и пробелы, которые эта функция вставляет для отступов, то получим меньший по весу файл, чем сериализированный, однако придётся в текстовых строках пробелы менять на html сущности, что геморрно.
Тут поэкспериментировал пол-дня, над функциями json_encode и json_decode, и получается, что файл занимает в 2-3 раза меньше места на диске, при этом скорость его загрузки возрастает в 2-2,5 раза, причём формат json как буд-то специально предназначен для хранения данных типа массивов и легко читаем. Надо, друзья шагать в ногу со временем, а сейчас, даже Опера использует такой формат, для хранения закладок в текстовом файле!
Пусть эти функции работают только PHP 5 >= 5.2.0, однако кто сейчас сидит на 4 пыхе?
Теперь всё устаканилось. Пока кардинально ничего менять не будем, на это нет времени, а сделаем:
1) новый формат json.
2) неделимые темы. |
Flat |
Отправлено: 20 марта 2019 — 17:24 • Тема: Данные профиля из MySQL (регистрация с СМС) • Форум: Общие вопросы |
Ответов: 3 Просмотров: 0
|
dmitryms1 пишет: Хотелось бы познать весь алгоритм. В PHP я еле-еле на 4 с минусом тяну.
Чтобы познать весь алгоритм, нужно просто прочесть весь нужный код. Но вначале подтянуть знание php. Чтобы расписать на русском языке весь алгоритм, нужно будет написать форум с нуля, но уже не на пыхе, а на могучем русском, а это новый "Война и Мир"... Так что никто за Вас это делать не будет, поскольку все заняты своими делами, никто за вас не будет кушать вашу кашу. Все через это проходили: садитесь за код, учебники и вперёд. |
Flat |
Отправлено: 20 марта 2019 — 10:50 • Тема: Данные профиля из MySQL (регистрация с СМС) • Форум: Общие вопросы |
Ответов: 3 Просмотров: 0
|
dmitryms1 пишет:Вопрос только в том как мне правильно "вклиниться" в код форума. Сможете описать алгоритм регистрации на ExBB (что откуда берется и куда пишется)?
Если вам надо будет "вклиниться" в код exbb, то по любому с ним надо будет познакомиться. Регистрация в файле register.php, вход/выход в loginout.php. |
Flat |
Отправлено: 17 марта 2019 — 09:24 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
1Bot пишет:Дополнительно следует добавить функционал при удалении/переносе в другую тему сообщений по перераспределению сообщений между файлами.
Да, естественно.
1Bot пишет:Можно просто делать пометку для сообщения "удален" и из админки или отдельной плановой задачей делать полную перестройку файлов темы, убирая удаленные сообщения.
Так и сделаем.
Сейчас пока переписываю setforums.php. На RC у меня при определённой логике удаления/добавления/перестройки категорий и форумов посыпался весь allforums.php, после чего мне очень захотелось переделать данный файл.. К тому же иногда при удалении форумов остаются их папки. Кстати первоначальный setforums до переделки Маркусом был относительно правильней организован: там был свитч переключатель на функции, при этом в редакторе можно было легко найти функцию через их список, а сейчас приходится искать вручную, либо через поиск, что очень напрягает. С точки зрения программиста первоначальный вариант был правильнее, чем через ifelse.. Да и переменные не перекрывались.. |
Flat |
Отправлено: 16 марта 2019 — 06:06 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Реализован собственный шаблонизатор. Весь php код из шаблонов убран. Примерно как в PhpBB, но несколько по другому..
Файлов шаблонов станет меньше и они будут более понятными. В редакторе код шаблона прекрасно подсвечивается. Честно говоря я "тащусь" от своего шаблонизатора, - мне он положительно нравится!!! Удивительно, но загрузка главной страницы стала быстрее, видимо потому, что файл шаблона единственный и грузится только 1 раз!
Решил каким образом реализовать проблему деления одной темы на несколько меньших, которая является ахилессовой пятой форумов типа exbb. Проблема эта давняя, но никто так и не приступил к её решению.
После напряжённых раздумий, решил сделать таким образом:
Каждая тема делится на отдельные файлы по 60 сообщений в файле. Число 60 оптимально по нескольким причинам.
Каждый юзер имеет право выбрать не произвольно число сообщений на станицу, а заранее определённое число, которое на цело делится на 60. В профиле он может выбрать такие числа количества сообщений: 1, 2, 3, 4, 5, 6, 10, 15, 20, 30, 60.
В этом случае не придётся качать помимо 60 сообщений ещё 60 сообщений второго файла, если часть сообщений будут лежать в другом файле.
При такой схеме мы получаем:
1. время загрузки темы является постоянной величиной. Поэтому тема может быть сколь угодно большой, и её не нужно делить на отдельные темы, и не будет потерь в скорости загрузки даже при огромных темах.
2. юзеры по прежнему имеют право выбрать определённое число сообщений на одну страницу, хотя и из ограниченного списка.
3. количество файлов тем будет относительно не большим при 60 сообщений на файл даже для огромных форумов.
Почему раньше это не было реализовано?.. |
Flat |
Отправлено: 13 марта 2019 — 02:50 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
1Bot пишет: есть опасность вставки в такие "данные" любого кода, который также может перекрывать любые переменные;
Дело в том, что я и подключаю не через include, а через функцию exbb_read(), в которой делаю:
Цитата:return eval($buf);
Всё делается примерно точно также, как и сейчас.
1Bot пишет:- при неполной записи в такой файл во время его подключения будет фатальная ошибка.
Ну, это и сейчас так. В этом случае, предусмотрено, что в основном, запись делается поверх существующего файла с тем же порядком следования элементов. Поэтому, даже при неполной перезаписи ничего не глюканётся, кроме может быть неполной и неверной записи какого-то отдельного поля. Надо стараться, чтобы физически не тасовать элементы массивов без острой на то нужды.
К достоинствам можно добавить и то, что его легко модифицировать " неумелыми админскими ручками" если что случится. А на сериализированные массивы без страха смотреть невозможно. Новый формат ничем не хуже сериализации в плане сохранения структуры, к ому же на порядок читабельнее.
Что касается отдельного файла с категориями, то возможно откажусь от этой идеи и оставлю один файл allforums, но несколько изменённый. Даже так и сделаю. Иначе придётся слишком много всего менять.. Да и так придётся многое изменить: практически новое ядро.
В setforums.php сейчас сделано добавление категорий, форумов и подфорумов(раздельно).
Думаю если постараться вскоре будет бета и возможно к разработке подключатся и другие пользователи.
Часть кода возьму от своих старых наработок, в частности отслеживание посещений пользователями отдельных тем и онлайн подсчёта. Сейчас тут применяется модуль sqlite, а будет силами самого скрипта. Отслеживаться будут последние 100-200 тем(число задаётся в админке), которые пользователь посетил/не посетил. Это всё практичски уже написано для другого движка.
Онлайн подсчёт должен быть более корректным. Вы думаете что тут каждый день по 400-1000 гостей? Это саомобман, достаточно взглянуть на логи посещений. Тут идёт подсчёт каждого действия гостя, хотя он и не уникален, а также не корректно подсчитываются боты. |
Flat |
Отправлено: 11 марта 2019 — 17:13 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
По делам текущим..
Сейчас полностью работаю над оригинальным Exbb.
Сделано:
1) Движок переведён на другой, более читаемый формат файлов. Загрузка файлов стала в 2 раза быстрее;
Пример файла boardstats.php:
CODE:<?php die('Access denied!');?>
return array (
'max_online' => 1,
'max_time' => 1552311233,
'lastreg' => 'admin',
'last_id' => 1,
'totalmembers' => 1,
'totalposts' => 0,
'totalthreads' => 3,
);
2) Все данные: папки members, messages, uploads, forums собраны в в data;
3) Функции exbb_read и exbb_write сделаны атомарными, т. е. убраны из кода функции fclose хэндлов файлов. Раньше это могло привести к неприятным последствиям, так как блокировка файлов и разблокировка были разнесены во времени, а некоторые файлы блокируются, но не разблокируются в коде движка, что может привести к конфликтам процессов.
4) Несколько изменён файл allforums.php. Создан отдельный файл со списком всех категорий. Это привело:
1. Возможность задавать модераторов отдельной категории, возможность задавать права на отдельную категорию, а также делать отдельную категорию приватной.
2. Избавится от бага тасовки категорий и форумов. Теперь там всё прозрачно.
3. Создавать категорию без форумов. Сейчас если удаляем единственный форум в категории удаляется и категория, что неприятно.
4. Сделать номера категорий уникальными, а не зависящими от порядка сортировки.
Сейчас надо полностью переработать работу в файле setforums.php и некоторых других. Короче, буду перелопачивать весь код. |
Flat |
Отправлено: 27 февраля 2019 — 08:50 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
К тому же функция _OnlineLog() вызывается только в некоторых модулях, которые по представлению программиста должны учитывать онлайн посетителей. К сожалению можно просто забыть вызвать эту функцю, в каком-то модуле, что приведёт к искажению статистики. Правильней было бы вызвать эту функцию всего один раз: в функции авторизации, при этом будут учитываться все посетители. |
|