Страниц (51): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
Найдено сообщений: 763 |
1Bot |
Отправлено: 9 апреля 2019 — 13:00 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:Изменил, концепцию удаления/перемещения сообщений в теме, приходится всё переписывать.
Идея такая:
теперь мы не будем перестраивать ВСЮ тему целиком, если, к примеру, мы удаляем сообщение/я из начала темы. Теперь будем удалять сообщение/я только из того файла, в котором находится данное сообщение, без перестройки темы. По ходу проверяем файл на количество сообщений. Если в нём менее половины или половина сообщений(на файл), то проверяем следующий файл и если в нём тоже менее половины сообщений, обьединяем соседние файлы.
При такой схеме при показе темы мы откроем максимум 2 файла. А при удалении_перемещении также будут обработаны в лучшем случае 1 файл, а в худшем 2, даже если в теме большое количество файлов.
Это только сейчас меня торкнуло. И это окончательное решение.
Пользователь по прежнему имеет право выбрать ПРОИЗВОЛЬНОЕ количество сообщений на страницу.
Для exbb лучше не придумаешь! Бывают просветления..
Идея не до конца раскрыта, так не понятно:
- откуда известно в скольки файлах располагается тема?
- какая последовательность сообщений в файлах темы?
- как производить все манипуляции объединения при MSFIOA (Multiprocess Simultaneous File Input Output Access / многопроцессный одновременный файловый ввод вывод)? |
1Bot |
Отправлено: 2 апреля 2019 — 15:31 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:В том, что гораздо проще не париться, а перевести базу на sqlite, при этом у нас будет та же самая база прямого доступа в одном файле, который для нас доступен. Но тут возникает момент: файл-то доступен, но его практически невозможно редактировать вручную.
Вы пришли к самому правильному выводу - нужно использовать sqllite3 для хранения данных в файлах. Очень много плюсов. Да и в редактировании данных вручную совсем нет необходимости - есть множество готовых клиентов: DB Browser for SQLite, SQLite Manager, DBeaver, SQLiteStudio.
Блокировки при файловом доступе все равно придется использовать либо напрямую, либо опосредовано через готовые библиотеки. |
1Bot |
Отправлено: 2 апреля 2019 — 15:03 • Тема: Мод: Спойлеры • Форум: Модификации и дополнения |
Ответов: 115 Просмотров: 0
|
Flat пишет:К сожалению, информация в спойлере не видна тем, у кого отключен javascript - пример плохого юзабилити. Нельзя обделять любых пользователей. Попробую сделать через джейквэри в качестве домашнего задания..
Вы меня удивляете, как в браузере будет выполняться jQuery, если выполнение javascript выключено? |
1Bot |
Отправлено: 1 апреля 2019 — 13:15 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat.
Есть у меня одна идея для хранения произвольной информации в файлах прямого доступа.
Возможно Вы попробуете ее реализовать.
1) Файл данных прямого доступа, который хранят наборы текстовых данных произвольной длинны (фактически это данные произвольной структуры после сериализации).
2) Каждая хранимая структура имеет уникальный идентификатор (по которому ее можно добавить/удалить/изменить).
3) Есть файл для быстрого доступа к данным (файл-индекс) - файл с наборами данных фиксированной длинны, а именно хранит массив структур вида
CODE:(
id_block - уникальный идентификатор порции данных,
offset_block - смещение порции данных в байтах для прямого доступа в файле данных
length_data - длина в байтах, занимаемая порцией данных
length_block - длина в байтах, занимаемая блоком
)
Одна такая пара файлов может хранить как весь форум, так и одну тему, а может только раздел - это вопрос только идентификации данных, а вся работа с блоками будет унифицированна на данной структуре.
Остается реализовать несколько операций над такой структурой с учетом возможного одновременного параллельного доступа:
- вставка нового блока
- изменение существующего блока
- удаление существующего блока
Размеры сохраняемых блоков данных не имеют значения - лишь бы один блок помещался в память, т.к. данные будут сохраняться и считываться в режиме прямого доступа к файлу. |
1Bot |
Отправлено: 28 марта 2019 — 17:05 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat,
Теперешнюю структуру нет смысла менять, т.к. для одинаковых данных:
- serialize дольше выполняется, чем json_encode
- unserialize выполняется быстрее, чем json_decode
- для данных до 70М serialize текст занимает меньше, чем json
- у serialize практически неограниченная вложенность структур, у json - до 256 уровней
- в serialize можно хранить экземпляры классов со всеми свойствами, в json - только публичные свойства
- unserialize может полностью восстановить экземпляры классов, json_decode - восстановит свойства в StdClass
Дополнительно хочу порекомендовать Вам выставить для тестов у себя настройки как на реальных хостингах:
- Суммарная нагрузка за день (статистическая нагрузка) не должна превышать 50 cp на CPU, 1000 единиц на MySQL.
- Запрещается использование процессами процессоров сервера более 60% в течение 5 секунд и более 10% в течение 25 секунд. В случае превышения данного лимита процесс завершается.
- Максимальное число процессов пользователя не может превышать 40.
- Максимальное использование оперативной памяти на процесс (memory limit): 128 Мб
- Максимальное время исполнения скрипта (параметр max_execution_time): 120 секунд.
|
1Bot |
Отправлено: 21 марта 2019 — 15:17 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Зачем оставлять неделимыми темы? Для больших активных тем это будет приводить к чрезмерному чтению (Вы сами об этом писали). |
1Bot |
Отправлено: 17 марта 2019 — 07:03 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:Решил каким образом реализовать проблему деления одной темы на несколько меньших, которая является ахилессовой пятой форумов типа exbb. Проблема эта давняя, но никто так и не приступил к её решению.
После напряжённых раздумий, решил сделать таким образом:
Каждая тема делится на отдельные файлы по 60 сообщений в файле. Число 60 оптимально по нескольким причинам.
Каждый юзер имеет право выбрать не произвольно число сообщений на станицу, а заранее определённое число, которое на цело делится на 60. В профиле он может выбрать такие числа количества сообщений: 1, 2, 3, 4, 5, 6, 10, 15, 20, 30, 60.
В этом случае не придётся качать помимо 60 сообщений ещё 60 сообщений второго файла, если часть сообщений будут лежать в другом файле.
При такой схеме мы получаем:
1. время загрузки темы является постоянной величиной. Поэтому тема может быть сколь угодно большой, и её не нужно делить на отдельные темы, и не будет потерь в скорости загрузки даже при огромных темах.
2. юзеры по прежнему имеют право выбрать определённое число сообщений на одну страницу, хотя и из ограниченного списка.
3. количество файлов тем будет относительно не большим при 60 сообщений на файл даже для огромных форумов.
Почему раньше это не было реализовано?..
Хорошая идея!
Дополнительно следует добавить функционал при удалении/переносе в другую тему сообщений по перераспределению сообщений между файлами.
Можно просто делать пометку для сообщения "удален" и из админки или отдельной плановой задачей делать полную перестройку файлов темы, убирая удаленные сообщения. |
1Bot |
Отправлено: 12 марта 2019 — 20:15 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:По делам текущим..
Сейчас полностью работаю над оригинальным 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,
);
Вы объединяете код и данные.
Достоинства:
- такой файл будет подключаться быстрее, чем десериализация;
- файл будет кеширован самим php.
Недостатки:
- есть опасность вставки в такие "данные" любого кода, который также может перекрывать любые переменные;
- при неполной записи в такой файл во время его подключения будет фатальная ошибка. |
1Bot |
Отправлено: 21 февраля 2019 — 07:07 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat пишет:Изменена концепция входа администратора в админцентр. Вопрос на засыпку: зачем существует функция повторного залогинивания админа при входе в админ центр? Мне действительно интересно. Насколько я знаю нигде такого нет.. По вашему мнению это повышает безопасность скрипта? .
Давайте подумаем: админ уже авторизован на форуме. Теперь ему показывается ссылка на админцентр. При переходе ему показывается форма входа в админ центр. Зачем??? Это просто дубляж функции залогинивания. Админ и так уже авторизовался! Зачем ещё раз? Чтобы войти в админ центр? Так и каждый гость знакомый с кодом будет знать ссылку в админцентр!!! И сейчас именно так и есть! Понятно что делали студенты первокурсники, это по коду сплошь видно и понятно. Я тоже бывает косячу.. Убрал этот ненужный дубляж. В админ центр и так никто кроме админа не пройдёт: хоть триста раз авторизуйся это безопасность ни на йоту не повысит, друзья..
Отдельная авторизация в админ-центре из-за того что доступ на основной форум можно закрыть (и соответственно доступ к основной форме авторизации будет недоступен). |
1Bot |
Отправлено: 16 февраля 2019 — 07:05 • Тема: EXBB gold edition • Форум: Обсуждаем |
Ответов: 87 Просмотров: 0
|
Flat ,
Как Вы решаете вопрос с зависимыми модами?
Пример: мод, который закрывает/открывает определенные разделы в зависимости от репутации пользователя или количества его сообщений в определенном разделе и т.д. |
1Bot |
Отправлено: 11 февраля 2019 — 05:52 • Тема: Мод: Текстовое подтверждение при регистрации • Форум: Модификации и дополнения |
Ответов: 97 Просмотров: 0
|
Parapsixolog пишет:1Bot пишет:
Пока не вижу способа сделать моды полностью независимыми. Как вы предполагаете это сделать?
Разве WebMaster уже не делал что то подобное - http://exbb.info/community/topic...m=53&topic=1 ? Правда дело у него далеко не продвинулось.
Да тестировала данный подход, потому знаю детально о нем. Он событийно-ориентированный. Его достоинствами есть максимальная стандартизация событий в ядре.
Его недостатки в том, что все возможные события, которые понадобятся для конкретного мода невозможно описать в ядре и моды практически не могут взаимодействовать между собой.
(Добавление)
Flat пишет:Может отдельную тему образовать, ибо рождается новый форк движка? Там и буду выкладывать то что сделано; все версии; там будем обсуждать конкретные вещи?
Желательно, чтобы потом по всему форуму не искать. |
1Bot |
Отправлено: 10 февраля 2019 — 07:27 • Тема: Мод: Текстовое подтверждение при регистрации • Форум: Модификации и дополнения |
Ответов: 97 Просмотров: 0
|
Yamaliya пишет:Flat , тебе бы в депутаты..
Депутаты в этом плане похожи, но здесь это только на пользу, потому если даже нет финальной реализации, а появится лишь удачная идея -- уже хорошо.
Хороший разработчик планирует свои действия перед реализацией, советуется в спорных решениях, чтобы по возможности получить как можно более сбалансированное решение, которое максимально учитывает замечания.
Соответственно их обсуждает, реализует наброски, говорит о своих планах... |
1Bot |
Отправлено: 10 февраля 2019 — 07:04 • Тема: Мод: Текстовое подтверждение при регистрации • Форум: Модификации и дополнения |
Ответов: 97 Просмотров: 0
|
Flat пишет:Судя по коду exbb все эти моды глубоко проникли в ядро движка, по сути став одним целым с ним. Это конечно не правильно. Причина в том, что изначально об этом и не думали.. двиг просто не был заточен на моды. Мод должен быть независим от ядра, чтоб его можно было легко вкл. и выкл. Одной кнопкой.. Ну, это дело поправимо..
Для ядра это ключевой вопрос. Пока не вижу способа сделать моды полностью независимыми. Как вы предполагаете это сделать? |
1Bot |
Отправлено: 8 февраля 2019 — 15:13 • Тема: Мод: Текстовое подтверждение при регистрации • Форум: Модификации и дополнения |
Ответов: 97 Просмотров: 0
|
Flat пишет:В строчках:
CODE:
if (is_array($_GET))
и
CODE:
if (is_array($_POST))
Условия ВСЕГДА возвращают TRUE!
Правильно:
CODE:
if (!empty($_GET))
Настоятельно прошу заменить у себя.
Если это не было изменено каким-либо образом, например
CODE:$_POST = 'not array';
Обычно в целях защиты обнуляют пост данные, если например crfs-токен неправильный. |
|
Страниц (51): « 1 [2] 3 4 5 6 7 8 9 ... » В конец
|