[DEV] Auto enable/disable GZIP compression

Здесь авторы могут постить бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!

[DEV] Auto enable/disable GZIP compression

Сообщение Siava 19.09.2005 0:08

Для нужд своего форума придумал такой мини-мод, который автоматически выключает 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 раз(а).
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение Xpert 19.09.2005 0:27

Естественно. Проверяем значение $board_config['gzip_compress'].
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение Siava 19.09.2005 0:58

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

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

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

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

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

Работает только под *nix системами.
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение Гога 19.09.2005 2:40

Siava писал(а):cat /proc/loadavg

Вау! Чего только нет в /proc :)
А если безопасный режим, да ещё с open_basedir ? :(
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.
Аватара пользователя
Гога
phpBB 2.0.5
 
Сообщения: 235
Зарегистрирован: 09.05.2005 16:06
Откуда: Архангельск

Сообщение quazi 19.09.2005 9:58

Siava писал(а):можно ли его как-то оптимизировать


можно http://phpbbguru.net/community/viewtopic.php?t=2743
quazi
phpBB 2.0.8
 
Сообщения: 313
Зарегистрирован: 15.03.2005 19:49

Сообщение Siava 19.09.2005 10:56

quazi
Пасиба, я уже оптимизировал (см. выше) =)
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение Chemist 19.09.2005 15:41

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

Если фортуна повернулась к тебе задом... не теряйся!
Аватара пользователя
Chemist
phpBB 1.4.2
 
Сообщения: 52
Зарегистрирован: 28.03.2005 15:45
Откуда: Москва

Сообщение Coagulant 19.09.2005 16:53

Siava
Можно вставить условие: если не удается выполнить
Код: Выделить всё
$loadavg_array = explode(" ", exec("cat /proc/loadavg"));

то дальше и не продолжать.

В идеале - оформить как мод (избавиться от hard-coded переменной $loadavg_max и вынести настройку в админку, например). Хотя, может быть это уже лишнее :wink:
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1030
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва

Сообщение quazi 19.09.2005 17:51

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

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

и еще. неуниверсальное решение - linux only
quazi
phpBB 2.0.8
 
Сообщения: 313
Зарегистрирован: 15.03.2005 19:49

Сообщение Siava 19.09.2005 22:54

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

Мод сейчас прекрасно работает на моём форуме, 60 человек онлайн и никаких ошибок.

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


Coagulant
Будет время, оформлю :)
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение quazi 20.09.2005 8:45

Siava, когда я говорил о неуниверсальности, то я имел ввиду следующее (винда - тем более)
http://xpoint.ru/forums/computers/os/un ... 1246.xhtml
важен второй пост
quazi
phpBB 2.0.8
 
Сообщения: 313
Зарегистрирован: 15.03.2005 19:49

Сообщение Siava 20.09.2005 11:13

quazi
Siava писал(а):Для нужд своего форума придумал такой мини-мод

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

Chemist писал(а):Идея суперская! Поставил себе, все работает.


quazi
Не понимаю ваших придирок, я выше описал всё что имел в виду. Мод придумал для нужд своего форума, кому-то эта идея пригодилась. У меня всё работает, у кого-то тоже. Я ж не заставляю всех подряд это использовать. У кого на сервере винда - тем сочувствую. По ссылке переходил, ничего интересного там не нашёл. Спасибо за комментарии, have a nice day :mrgreen:
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение Гога 20.09.2005 23:18

А реально мод снижает загрузку сервера?
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.
Аватара пользователя
Гога
phpBB 2.0.5
 
Сообщения: 235
Зарегистрирован: 09.05.2005 16:06
Откуда: Архангельск

Сообщение Xpert 21.09.2005 0:08

Siava
Вполне правильное вам замечание сделали. Я вот например читать совсем не разучился. ;) и смысл по ссылке увидел.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5710
Зарегистрирован: 13.03.2004 22:27
Откуда: msk.ru

Сообщение Siava 21.09.2005 0:11

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

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

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

Xpert
То есть это?
Забыл сказать, Вас должно интересовать только первое число из представленных Вами.
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

След.

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0