Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[DEV] Auto enable/disable GZIP compression

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

[DEV] Auto enable/disable GZIP compression

Сообщение Siava »

Для нужд своего форума придумал такой мини-мод, который автоматически выключает gzip-компрессию при достижении определённой загрузки сервера (load average) и автоматически её включает, когда загрузка спадает.

Код: Выделить всё

# 
#-----[ OPEN ]------------------------------------------ 
#
includes/page_tail.php

# 
#-----[ FIND ]------------------------------------------ 
#
//
// Close our DB connection.
//
$db->sql_close();

# 
#-----[ BEFORE, ADD ]------------------------------------------ 
#
// start gzip Mod
$loadavg_array = explode(" ", exec("cat /proc/loadavg"));
$loadavg = $loadavg_array[2];
$loadavg_max = 4;

if (($loadavg >= $loadavg_max) && ($board_config['gzip_compress'] == 1))
{
			$sql = "UPDATE " . CONFIG_TABLE . " SET
				config_value = '0'
				WHERE config_name = 'gzip_compress'";
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Failed to update gzip config");
			}
}
else if (($loadavg < $loadavg_max) && ($board_config['gzip_compress'] == 0))
{
			$sql = "UPDATE " . CONFIG_TABLE . " SET
				config_value = '1'
				WHERE config_name = 'gzip_compress'";
			if( !$db->sql_query($sql) )
			{
				message_die(GENERAL_ERROR, "Failed to update gzip config");
			}
}
// end gzip Mod
Последний раз редактировалось Siava 19.09.2005 10:55, всего редактировалось 3 раза.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Естественно. Проверяем значение $board_config['gzip_compress'].
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

Xpert
Так ведь $board_config['gzip_compress'] берётся из БД, то есть всё-равно выполняется запрос, только на чтение. :roll:

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

А.. допёрло :lol:

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

Код обновлён, спасибо за помощь, может кому пригодится :lol:

Работает только под *nix системами.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Гога
phpBB 2.0.0
Сообщения: 220
Стаж: 18 лет 11 месяцев
Откуда: Архангельск

Сообщение Гога »

Siava писал(а):cat /proc/loadavg
Вау! Чего только нет в /proc :)
А если безопасный режим, да ещё с open_basedir ? :(
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет 1 месяц

Сообщение quazi »

Siava писал(а):можно ли его как-то оптимизировать
можно http://phpbbguru.net/community/viewtopic.php?t=2743
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

quazi
Пасиба, я уже оптимизировал (см. выше) =)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Chemist
phpBB 1.4.2
Сообщения: 51
Стаж: 19 лет
Откуда: Москва

Сообщение Chemist »

Идея суперская! Поставил себе, все работает.
З.Ы. Правда под фрюху пришлось переделывать, но я до этого заморачивался с реализацией вывода Uptime и Load average, так что просто имена переменных поменял.
Последние работы на elist.ws & motozone.ru!

Если фортуна повернулась к тебе задом... не теряйся!
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

Siava
Можно вставить условие: если не удается выполнить

Код: Выделить всё

$loadavg_array = explode(" ", exec("cat /proc/loadavg"));
то дальше и не продолжать.

В идеале - оформить как мод (избавиться от hard-coded переменной $loadavg_max и вынести настройку в админку, например). Хотя, может быть это уже лишнее :wink:
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет 1 месяц

Сообщение quazi »

имхо неверное решение
каждый запуск скрипта - это проверка "загрузки" процессора и обновление базы
как результат - при большой посещаемости постоянное и причем бессмысленное обновление единственной записи

оптимизация минимальна, а код усложнился.

и еще. неуниверсальное решение - linux only
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

quazi
каждый запуск скрипта - это проверка "загрузки" процессора и обновление базы
Нет, внимательно посмотри условие. Запросы в БД (обновление) происходят лишь когда надо сменить значение gzip вкл. на выкл. или наоборот, все остальные случаи (которых 99%) без участия БД ;)

Мод сейчас прекрасно работает на моём форуме, 60 человек онлайн и никаких ошибок.
quazi писал(а):и еще. неуниверсальное решение - linux only
С этими вопросами уже к дядюшке Билли обращайся :mrgreen:


Coagulant
Будет время, оформлю :)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет 1 месяц

Сообщение quazi »

Siava, когда я говорил о неуниверсальности, то я имел ввиду следующее (винда - тем более)
http://xpoint.ru/forums/computers/os/un ... 1246.xhtml
важен второй пост
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

quazi
Siava писал(а):Для нужд своего форума придумал такой мини-мод
Siava писал(а):Код обновлён, спасибо за помощь, может кому пригодится
Chemist писал(а):Идея суперская! Поставил себе, все работает.
quazi
Не понимаю ваших придирок, я выше описал всё что имел в виду. Мод придумал для нужд своего форума, кому-то эта идея пригодилась. У меня всё работает, у кого-то тоже. Я ж не заставляю всех подряд это использовать. У кого на сервере винда - тем сочувствую. По ссылке переходил, ничего интересного там не нашёл. Спасибо за комментарии, have a nice day :mrgreen:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Гога
phpBB 2.0.0
Сообщения: 220
Стаж: 18 лет 11 месяцев
Откуда: Архангельск

Сообщение Гога »

А реально мод снижает загрузку сервера?
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Siava
Вполне правильное вам замечание сделали. Я вот например читать совсем не разучился. ;) и смысл по ссылке увидел.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

Гога
Ровно настолько, насколько снижает загрузку выключение gzip компрессии при нагруженном сервере :mrgreen:

Только вот значение $loadavg_max = 4; подбирать надо вручную, для себя взял именно столько. (для Slackware 10.1 на P4-2.6)

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

Xpert
То есть это?
Забыл сказать, Вас должно интересовать только первое число из представленных Вами.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)

Вернуться в «Бета-версии модов для phpBB 2.0.x»