ООО ЭкоЮнит
FAQSearchMemberlistUsergroupsFilesLog inRegisterГлавная
printer-friendly view
 
 
AuthorMessage
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Теперь моя наработка, на phpbb.com этого не обнаружено.

Есть 2 таблицы phpbb_sessions и phpbb_confirm, которые хранят только временные данные. Их можно перевести в тип MEMORY. MEMORY означает что на диске хранится только структура таблицы, а все данные в ОЗУ. Перевод этих таблиц в MEMORY дал выгрыш скорости записи в таблицу в 4 раза.
запрос: UPDATE phpbb_sessions
ENGINE=InnoDB - время записи 0.000449 сек
ENGINE=MEMORY - время записи 0.00012599999999999 сек
Увеличение записи произошло за счет того, что сервер не обращается к диску. Скорость чтения не изменилась, по видимому из-за того, что данные из таблицы сессий и так читаются из ОЗУ.

При замене типа таблицы на MEMORY надо братить внимание на то что MEMORY не поддерживает тип данных text, поэтому предварительно замените text на varchar, с приемлемым размером.
У меня замененено:
`session_agent` text NOT NULL - на `session_agent` varchar(512) NOT NULL,
`is_bot` text NOT NULL - на `is_bot` varchar(45) NOT NULL,
`is_server_request_uri` text NOT NULL - на `is_server_request_uri` varchar(1024) NOT NULL,

Из минусов. В случае перезагрузки сервера, все сессии будут уничтожены и всех пользователей разлогинит.
После того как пользователь уйдет с форума, при типе таблицы MyISAM или InnoDB, сессия будет удалена из ОЗУ, и спустя заданное в настройках время жизни она будет удалена и с диска. При типе MEMORY сессия будет висеть в ОЗУ до истечения своего срока жизни. Для уменьшения этого времени, можно уменьшить время жизни сессии гостей.

То есть, если надо увеличить быстродействие, то переводите эти таблицы в MEMORY. Если на сервере мало ОЗУ, то не переводите.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap , drive.google.com/.....49aHH-NdbR
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

В моде Title: DB Maintenance, предлагается сделать преобразование типа таблицы в MEMORY. На новых версиях MYSQL это преобразование, из DB Maintenance, работать не будет, т.к. тип HEAP теперь переименован в MEMORY, а вместо TYPE надо использовать ENGINE.

Запрос для преобразования в MEMORY
Code:
ALTER TABLE `phpbb_sessions` ENGINE=MEMORY MAX_ROWS=500;
ALTER TABLE `phpbb_confirm` ENGINE=MEMORY MAX_ROWS=500;
В этот запрос добавлено MAX_ROWS=500 , MAX_ROWS нужен что бы при DDoS атаках форум не ложился из-за нехватки ОЗУ. а все ограничивалось трудностями пользователей с авторизацией.
Если делать без MAX_ROWS=500, то запрос будет таким
Code:
ALTER TABLE `phpbb_sessions` ENGINE=MEMORY;
ALTER TABLE `phpbb_confirm` ENGINE=MEMORY;

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap , drive.google.com/.....49aHH-NdbR
Back to topOffline View user's profile
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

vlad77 @ Tue 07 Aug, 2018 09:31 wrote: (View Post)
Show

Если много ОЗУ и много посетителей, то тоже не переводите. phpbb_confirm я бы перевёл в MEMORY, насчёт сессий подумал. Сервера иногда перезагружают.

Добавлено спустя 2 минуты 17 секунд:

Ты ещё ради интереса посмотри, как на последней тройке сделано.

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Обещанный ранее код, для уменьшения времени сессий гостей.
Code:
OPEN
sessions.php

FIND
    $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
        WHERE session_time < ' . (time() - (int) $board_config['session_length']) . " 
            AND session_id <> '$session_id'";

REPLACE WITH
    $sql = 'DELETE FROM ' . SESSIONS_TABLE . ' 
        WHERE ( session_logged_in = 0 
            AND session_time < ' . (time() - (int) ceil($board_config['session_length'] / 2)) . ' ) 
            OR ( session_logged_in <> 0 
            AND session_time < ' . (time() - (int) $board_config['session_length']) . " ) 
            AND session_id <> '$session_id'";

OPEN
language/lang_english/lang_admin.php

FIND
$lang['Session_length']

IN-LINE FIND
';

IN-LINE BEFORE, ADD
<br /><span class="gensmall">Duration of session guests in 2 times less than specified in the settings</span>

OPEN
language/lang_russian/lang_admin.php

FIND
$lang['Session_length']

IN-LINE FIND
';

IN-LINE BEFORE, ADD
<br /><span class="gensmall">Продолжительность сессии гостей в 2 раза меньше заданной в настройках</span>

Если подсчитывается количество гостей за час, например для показа на главной странице форума, то надо будет умножить количество гостей на 2.

Добавлено спустя 5 минут 17 секунд:

Код, что бы удалять старые сессии не при каждом открытии страницы
Code:
OPEN
sessions.php

FIND
function session_clean($session_id)
{

AFTER, ADD
    if (mt_rand(1,5) != 1)
    {
        return true;
    }


Добавлено спустя 4 минуты 2 секунды:

Sergey @ Wed 08 Aug, 2018 16:41 wrote: (View Post)
Show
Пока читаю тему на phpbb.com, посмотрю последнюю 3ку как закончу.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap , drive.google.com/.....49aHH-NdbR
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

На странице phpbb.com/com.....6#p1136566
Советуют ускорить определение, голосовал ли уже пользователь в опросе
Code:
        $sql = "SELECT vote_id
            FROM " . VOTE_USERS_TABLE . "
            WHERE vote_id = $vote_id
                AND vote_user_id = " . intval($userdata['user_id']);

Создав индекс
Code:
create index vote_n_user on phpbb_vote_voters (vote_user_id, vote_id);

Если стоит мод для голосования гостей, например Title: Allow Guest Voting by Thoul, то надо делать такой запрос:
Code:
create index vote_n_user_n_ip on phpbb_vote_voters (vote_id,vote_user_id,vote_user_ip); 

Этот запрос хорошо работает и без Allow Guest Voting
Лучше, на случай дальнейшего развития форума, сразу делать его.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap , drive.google.com/.....49aHH-NdbR
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Думаю о кэшировании в common.php
Code:
$sql = "SELECT *
    FROM " . CONFIG_TABLE;
Смущает функция function dss_rand() в functions.php, которая все время что-то пишет в таблицу конфига.
Sergey, что это такое? И насколько она нужна?

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap , drive.google.com/.....49aHH-NdbR
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Что это такое удалось найти phpbb.com/com.....t=dss_rand
Написано, что-то усложняющее вычисление хакерами генерируемых форумом случайных чисел.
Все равно не понятно, насколько это надо. Rolling Eyes
Буду писать в файл, то что dss_rand() пишет в базу. Еще можно это писать в таблицу MEMORY или в разделяемую память, но это будет неоправданным усложнением кода.

P.S. Постоянные записи dss_rand() в базу, можно отключить, заменив в common.php, $dss_seeded = false; на $dss_seeded = true;

Добавлено спустя 2 часа 29 минут 5 секунд:

Мне представляется, что dss_rand() можно сделать так:
Code:
function dss_rand()
{
    global $board_config, $dbhost, $dbname, $dbuser;
    $val = md5(mt_rand() . 'b' . microtime() . $dbuser . $dbname . $dbhost . $board_config['board_startdate']);
    return substr($val, 4, 16);
}

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap , drive.google.com/.....49aHH-NdbR
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Оптимизация функции get_db_stat()
Optimization of function get_db_stat()
Функция get_db_stat() некоторыми модами вызывается 2 раза. Например модом Title: Topics a user has started
Поэтому имеет смысл ее кэшировать

Code:
OPEN
functions.php

FIND
function get_db_stat($mode)
{

AFTER,ADD
$mode2 = ($mode == 'postcount' || $mode == 'topiccount') ? 'posttopiccount' : $mode;
static $list_mode_data;
if (!is_array($list_mode_data))
{
    $list_mode_data = array();
}
if (isset($list_mode_data[$mode2]))
{
    $row = $list_mode_data[$mode2];
}
else
{

FIND
    $row = $db->sql_fetchrow($result);

AFTER,ADD
    $list_mode_data[$mode2] = $row;
} 

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap , drive.google.com/.....49aHH-NdbR
Back to topOffline View user's profile
Display posts from previous:   

Summary Rating For >> Избавляемся от extension.inc, db.php и проверок в index.php в phpBB2
Average Rating: 0.00 :: Min Rating: 0 :: Max Rating: 0 :: Number of Ratings: 0
Choose Rating: 1   2   3   4   5  

Similar Topics
Topic Author Forum Replies Last Post
No new posts Last Forum Topic On Index
Вывод темы последнего сообщения в разделе
Название мода: Last Forum Topic On Index Автор: Xpert Описание мода: Добавляет в список форумов на главной странице название последней затронутой темы каждого форума. Версия мода: 1.2.0 (обновление 11.08.2004)
vlad77 Архив модов для phpBB 2.0.x 17 Fri 30 Jan, 2015 11:18 View latest post
Sergey
No new posts Recent topics for phpBB2
последние темы форума на сайте
Есть такой замечательный мод Recent topic, как сделать чтобы при клике темы, пользователя отсылало не на первое сообщение в теме, а на последнее? Code ?php
miba Поддержка и моды для phpBB2 6 Tue 02 Aug, 2011 08:31 View latest post
miba
No new posts Change Style on Index - проблемы
Такой несложный мод, а поставить не получается, выдаёт ошибку Fatal error: Call to undefined function style_select() in /home/forfri/public_html/test/forum/index.php on line 315 Как только не подставляю в index.php Code
Kontrochka Поддержка и моды для phpBB2 15 Wed 20 Jan, 2010 13:43 View latest post
Dedof
No new posts Users viewing forum on Index
Не могу найти мод Users viewing forum on Index, который указывает кто просматривает тему и выводит внизу пользователей. Тут его уже нет https://www.phpbb.com/community/viewtopic.php?t=355395
Ренегат Поддержка и моды для phpBB2 2 Sun 29 Apr, 2018 22:41 View latest post
vlad77
No new posts Мод Change language on index
смена языка форума по умолчанию
Описание мода: Этот мод позволяет пользователю изменить язык форума на главной странице форума. Версия мода: 1.0.0 Сложность установки: Легко Время установки: ~3 минут Примечание автора: Если пользователь - гость, то
Sergey Поддержка и моды для phpBB2 23 Wed 10 Jun, 2009 10:19 View latest post
Sergey






All times are UTC + 3 hours
Users browsing this topic:
Registered Users: None

Jump to:   
printer-friendly view
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
/a
Username:

Password:

Log me on automatically each visit
  Яндекс.Метрика
CrackerTracker © 2004 - 2018 CBACK.de