ООО ЭкоЮнит
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
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

На phpbb.com этого не обнаружено.

При отправке сообщений, если у пользователя много сообщений, то самый долгий sql запрос:
When sending messages, if the user has a lot of messages, then the longest sql query:
SELECT MAX(post_time) AS last_post_time FROM phpbb_posts WHERE poster_id =
Он проверяет все сообщения этого пользователя. Но достаточно проверять только сообщения появившиеся за время флуд контроля.
оптимизация
Code:
open
functions_post.php

find
        //
        // Flood control
        //

find
            WHERE $where_sql";

replace with
            WHERE post_time >= " . ($current_time - intval($board_config['flood_interval'])) . " 
            AND " . $where_sql;

_________________
Архив модов с 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 предлагается
Code:
найти строки такого типа
for($j = 0; $j < count($ranksrow); $j++)

и заменить на
for($j = 0, $max = count($ranksrow); $j < $max; $j++)

или заменить на
$max = count($ranksrow);
for($j=0; $j < $max; $j++) 
Думаю достаточно заменить в наиболее часто используемых файлах. Это viewtopic.php, page_header.php, template.php. И в index.php

В движке без модов, в некоторых перечисленных файлах, циклов for может не быть.

_________________
Архив модов с 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

Лишний код в page_header.php
Code:
$nav_link_proto = '<link rel="%s" href="%s" title="%s" />' . "\n";
while( list($nav_item, $nav_array) = @each($nav_links) )
{
    if ( !empty($nav_array['url']) )
    {
        $nav_links_html .= sprintf($nav_link_proto, $nav_item, append_sid($nav_array['url']), $nav_array['title']);
    }
    else
    {
        // We have a nested array, used for items like <link rel='chapter'> that can occur more than once.
        while( list(,$nested_array) = each($nav_array) )
        {
            $nav_links_html .= sprintf($nav_link_proto, $nav_item, $nested_array['url'], $nested_array['title']);
        }
    }
}
Он используется только браузером Мозилла. Так как 95% процентов людей пользуются хромом, он не нужен. Кроме лишних php команд, этот код утяжеляет html код страниц.
Его можно закомментировать.

$nav_links_html = ''; , 'NAV_LINKS' => $nav_links_html в page_header.php, и {NAV_LINKS} в overall_header.tpl лучше оставить, т.к. он используется некоторыми модами.

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

P.S. На этом форуме и в phpBB3, этого кода для Мозиллы не обнаружено.

_________________
Архив модов с 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

Оптимизация для
##############################################################
## MOD Title: keep unread flags
##
## MOD Author: Merlin Sythove < N/A > (N/A) N/A
## MOD Author: asinshesq < N/A > (Alan) N/A
## MOD Author: Ptirhiik < N/A > (Pierre) rpgnet.clanmckeen.com
##
## MOD Description: This mod keeps the unread flags for a topic active until the topic is read.
## It also activates the new post feature for guests.

Если отключен показ непрочитанных сообщений для гостей (непрочитанные сообщения для гостей определяются с помощью куков), то в index.php для гостей все равно выполняется проверка прав на просмотр форумов, в довершение всего после этой проверки выполняется SQL запрос.

Для отключения
Code:
открыть
index.php

найти
//START MOD Keep_unread_2 * set $toggle_unreads_link so that later on the script knows wheter to run the extra queries to toggle view unread link text depending on whether or not there are unread posts 
$toggle_unreads_link = true;
//END MOD Keep_unread

заменить на
//START MOD Keep_unread_2 * set $toggle_unreads_link so that later on the script knows wheter to run the extra queries to toggle view unread link text depending on whether or not there are unread posts 
$toggle_unreads_link = ( $userdata['session_logged_in'] ) ? true : false;
//END MOD Keep_unread

Если решите включить показ гостям непрочитанных сообщений, то поменяйте обратно.

Добавлено спустя 1 час 8 минут 11 секунд:

В теме мода keep unread flags на phpbb.com, предлагается на очень больших форумах, вообще отключать эту проверку, ставить в index.php $toggle_unreads_link = false; Если все форумы доступны для просмотра, нет скрытых форумов, то лучше так и делать.

_________________
Архив модов с 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

Мод viewtopic_optimize_server_load
Version: 1.0.1

В предыдущей версии не работала опция "Показать сообщения: Начиная с новых". Так как эта опция редко используемая, теперь при ее использовании оптимизация отключается. По видимому на форуме lanzer этой опции не было. В чистом форуме она есть.

Sergey, перезалейте пожалуйста вложние в первом сообщении мода.


Download viewtopic_optimize_server_load.txt (3.66 KB). Added/Updated Wed 21 Nov, 2018 11:02. Downloaded 0 Time(s).
Version: 1.0.1
Этот мод оптимизирует тяжелый SQL запрос в viewtopic.php
This mod optimizes a heavy SQL query in viewtopic.php


_________________
Архив модов с 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

Мод viewtopic_optimize_server_load
Version: 1.0.2

Оказалось, что у lanzer, плохо проработаны разные сортировки, даже при стандартной сортировке "Начиная со старых", в запросе не задано правило сортировки. Поэтому сортировка может идти не по id сообщений, а по любому критерию, который "понравится" серверу.
При изменении админом настройки количества сообщений на странице, если страницу пытались открыть по оставшейся с прежних времен ссылке, код на странице показывал не те сообщения.
В прежней версии, при некоторых условиях возникала ошибка SQL запроса.

Исправлено, и оптимизирован код.

Для совместимости с модом ## MOD Title: Edit Post Date, ключ topic_n_id заменен на topic_n_time. Обратите внимание, на то что в инструкции поменян SQL запрос. От замены, разница во времени открытия страницы не изменилась (в пределах погрешности).


Download viewtopic_optimize_server_load.txt (4.21 KB). Added/Updated Mon 26 Nov, 2018 17:41. Downloaded 0 Time(s).
Version: 1.0.2
Этот мод оптимизирует тяжелый SQL запрос в viewtopic.php
This mod optimizes a heavy SQL query in viewtopic.php


_________________
Архив модов с 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

В sessions.php, в function session_pagestart() при записи времени сессии в SESSIONS_TABLE и в USERS_TABLE можно в sql запросах заменить $current_time на UNIX_TIMESTAMP(). Так база данных будет сама писать время сессии, а не брать его из php. У меня после замены перестали происходить подтормаживания при несколькиъ одновременных кликах (записях сессий). При этом время записи в таблицы не изменилось (или изменилось в пределах погрешности). Не знаю почему это работает, но работает. Если стоит ## MOD Title: Guest Sessions MOD, то он тоже пишет время сессии, и в нем тоже надо заменить.

_________________
Архив модов с 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 - 2019 CBACK.de