Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Оптимизация кода IB (увеличение скорости работы)

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8

Открыть новую тему     Написать ответ в эту тему

alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Grey2002
Ну незнаю, прикинь если надо будет удалить второй пост в теме на 500 ответов?
Shurik
Хтмл генератор есть, но я его пока не юзаю, а работаю над улучшеной индексацией динамики. Результаты очень неплохие....
Скрипт для архивации отдельно написан был А так будет конечно у меня возможность быстрого слива всей инфы с базы в файл +потом сжатие...

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 23:27 08-05-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
alexei

Цитата:
Хтмл генератор есть, но я его пока не юзаю, а работаю над улучшеной индексацией динамики. Результаты очень неплохие....  

а поконкретнее? что есть "улучшенная индексация"? Поделись плиз мыслями...  
мой хтмл генератор, например, спокойно ссылался вперед/назад, так что поисковик мог спокойно все обойти. Теперь интересно узнать про "улучшенную индексацию".

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 23:52 08-05-2003
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shurik
А хтмл каждый день генерить? Ведь каждый день в теме появляются новые сообщения, а хтмл архив сделан один раз.... У меня немного другая схема, после выхода собственного движка на MySQL+Perl будет инфа

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 00:07 09-05-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
alexei

Цитата:
А хтмл каждый день генерить? Ведь каждый день в теме появляются новые сообщения, а хтмл архив сделан один раз....  

не, у меня хтмл генерился раз в неделю... вряд ли чаще надо поисковикам.
а твоя идея, видать, заключается в том, что надо добавлять хтмлки, так? а если мессагу изменяют?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 12:04 09-05-2003
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shurik
Нет, каждый раз генерить хтмл не есть гуд. Разве что полностью на статику перейти. +Еще одна трабла. Допустим поисковик проиндексил тови хтмлкы archive/forum1/topic2.html, в поисковике будет выводится ссылка именно на archive/forum...2.html. Тоесть надо будет еще какой-то java скрипт сваять для редиректа юзеров на нормальную динамику.

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 13:12 09-05-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
alexei

Цитата:
Разве что полностью на статику перейти.

так эти хтмлки полностью статичны! Разве что я оставил ссылки сверху на оригинальный форум... Мне ж нужно, чтобы мессаги были в базе... а ссылки я как раз уже для юзера оставил. Захочет регнуться, а ссылка как раз на скрипт ведет.

Цитата:
Еще одна трабла. Допустим поисковик проиндексил тови хтмлкы archive/forum1/topic2.html, в поисковике будет выводится ссылка именно на archive/forum...2.html.  

не такая уж и большая трабла...
я форму ответа вообще убрал, т.е. хтмльная версия чисто почитать. Вот теперь еще тока что мысля пришла - вместо формы ответа накатать инфу челу, мол, хочешь ответить, идти сюда. А ссылка на оригинальную тему будет вести. Так что не нужны там скрипты.

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 22:17 09-05-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexei
Shurik
 
 
Можно я чуть-чуть вас прерву, может, кому помогу.
 
 
Рассказываю свой эксперимент использывания по совету Батвы
use strict
в скрипте главной паги (пока для эксперименту).
Ясен перец, скриптина не запустилась, а выдала на стандартный вывод кучу ошибок, все они сводились к тому, что требуется явное объявление переменных.
В итоге написала:
 
use vars qw($thisprog $action $query  $inmembername $inpassword $cookiepath $filetoopen $ikondir и т.д. и т.п. - много довольно-таки);
 
После этого скриптинка обрадовалась и очень шустренько стала работать и на локалхосте и на сервере.
 
Это при том, что по совету Батвы же, еще было указано:
    my ($title, $dateposted, $trash) = split(/\|/, $announcementdata[0]);
    Везде, где это есть.
 
Это также при том, что было из IkonRussian.lib выкинуто в отдельный библиотечный файл все, что касается админчасти, и это реквестится теперь в файле ikonadmin.lib    то есть в нем я написала (только один раз в этом файле) require admincenter.lib и все.
 
Плюс, сам IkonRussian.lib был сокращен довольно сильно и его урезание планомерно продолжается.
Плюс, где можно обойтись без циклов, я меняю это на констукции вида:
то-то и то-то if се-то и се-то;
 
Вместо того, чтобы писать:
if(то-то){
се-то;}
else{
не се-то;
}
 
Например:
$var = qq~html-код~ if $membername ne 'Guest';
 
 
Плюс &title - подпрограмма, которая шапку выводит, не вызывается там, где ее не просят - например, при добавлении сообщения.
 
 
Не получилось пока не выводить обновления страницы при поиске... То есть рефреши там стоят, не получилось пока их не делать...
 
Что бы еще такого по мелочи покопать? Ибо на крупное знаний не хватат.
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 05:01 10-05-2003
Grey2002



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx

Цитата:
Вместо того, чтобы писать:  
if(то-то){  
се-то;}  
else{  
не се-то;  
}  
 
Например:  
$var = qq~html-код~ if $membername ne 'Guest';

 
ну это уже кому как нравится, и кому какой код удобнее читать. В некторых случаех это и удобно...
 

Цитата:
Плюс, где можно обойтись без циклов, я меняю это на констукции вида:  
то-то и то-то if се-то и се-то;  

с каких это пор условия стали циклами? это просто разные синтаксисы написания.

----------
Мой Блог

Всего записей: 1325 | Зарегистр. 24-12-2001 | Отправлено: 09:11 10-05-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx

Цитата:
Не получилось пока не выводить обновления страницы при поиске... То есть рефреши там стоят, не получилось пока их не делать...  

я эту лажу переписал нафиг. По типу фильтра.
Правда надо еще нормальное разбиение по страницам сделать... Пока руки не доходят, чтобы пофиксить (планов просто тьма, но пока сессию не сдам...).

Цитата:
Это также при том, что было из IkonRussian.lib выкинуто в отдельный библиотечный файл все, что касается админчасти, и это реквестится теперь в файле ikonadmin.lib    то есть в нем я написала (только один раз в этом файле) require admincenter.lib и все.  

вообще говоря неплохо IkonRussian.lib разбить на "тематические" части.
Для ПМ можно выдернуть оттуда. Анонсы, всякие checkboard.cgi, forumoptions.cgi, help.cgi, ikonadmin.lib, ikonfriend.lib т.д.
Таким образом получаем раз в 5 меньший код ikonrussian.lib, а поскольку где в основном народ тусуется? В темах, форумах, профиль и ПМ, остальное его почти не касается - получается очень неплохо...

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 11:31 10-05-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
>с каких это пор условия стали циклами? это просто разные синтаксисы написания.
 
Ты меня в терминологии не путай, я и сама запутаюсь прекрасно, у меня на столе толстая книжка Ларринова, там черным по белому пример приведен:
 
$переменная = значение unless условие;
 
это позволяет избежать расходов, связанных с входом и выходом из блока, то есть предпочтительней чем:
 
if(условие){
$переменная = значение;
}
 
Да, не цикл тут, а блок, но про циклы тут тоже написано, не путай меня, я и так путаюсь.
 
А читаемость мне не так важна на этом фоне, мне надо снизить нагрузку на сервак и повысить скорость. Если для этого придется писать нечитаемый код, буду писать  
 
 
Я еще снесла из data/progs.cgi всю админчасть, вообще кучу всего посносила, теперь половина не работает, а половина виснет - видимо переменных хочет лол. Но получилось на use strict многое перевести.
 
 
Не, если серьезно, то если все корректно сделать и ничего не потерять, то все шустренько пашет, только в post.cgi пришлось отменять в циле прагму:
 
 
for ('forum','topic','membername','password','action','postno','inshowsignature','notify',
'inshowemoticons','previewfirst','intopictitle','intopicdescription','inpost','instickytopic',
'poll1','poll2','poll3','poll4','poll5','poll6','poll7','poll8','poll9','poll10','vote','topictitle',
'forumname') {
    no strict 'refs';
     
    Иначе Перл ругался на чем свет стоит.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 07:04 11-05-2003 | Исправлено: lynx, 04:22 13-05-2003
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx
Циклы это Repeat ... until var1=var2, While () do ..., For (i=1; i<100; ++i) и т.д.
А $test = 'yes' if ($var eq 'dev') это обычное условие.
Чтоб увеличить скорость надо не только поубирать переменные, но и переделать большинство скриптов с косяками. use strict я, для примера, использую для того чтобы код более менее читаем был когда модулей куча...

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 12:59 11-05-2003 | Исправлено: alexei, 13:01 11-05-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Циклы это Repeat ... until var1=var2, While () do ..., For (i=1; i<100; ++i) и т.д.  

foreach сюда же.
 
кстати, а зачем use strict нужен?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 22:12 11-05-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik
 

Цитата:
 а зачем use strict нужен?

 
Ну, в том варианте, как у меня - вначале идет объявление всех переменных, которые используются в этом скрипте, и потом уже скрипту с ними работается быстрей - ибо они уже все объявлены заранее.
 
alexei

Цитата:
 и переделать большинство скриптов с косяками

Ну, хоть парочку примеров.... Интересует топик.цги и пост.цги особо - бо самые используемые. Ну и главная пага - морд так сказать.
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 06:12 12-05-2003
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx
Еще надо скрипты стандартные найти... Вообщем есть конструкция

Код:
@arr = <FILE>;
foreach (@arr) { ... }

удобно конечно, но если файл большой то памяти жрет много. До перехода на БД использовал

Код:
while (<FILE>) { ... }

Также есть проблема в доступах к файлам(одновременная запись в файл с двух скриптов).

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 23:23 12-05-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alexei
 

Цитата:
@arr = <FILE>;  
foreach (@arr) { ... }  
 
удобно конечно, но если файл большой то памяти жрет много. До перехода на БД использовал  
Код:while (<FILE>) { ... }  
 
Также есть проблема в доступах к файлам(одновременная запись в файл с двух скриптов).

 
Не, пока тяжело для меня.
Я пока пытаюсь избавиться от лишних переменных.
Ну, например, $tablewidth поменяла на 90% - это мне сейчас все видно, какие переменные юзаются в скрипте, ибо пока их все не объявишь вначале, с юз стрикт работать то не будет
Ну и всякие $dfontsize1, 2, 3, 4, у меня все равно все на css. Причем их надо не просто сносить, а потом убирать из файлов типа boardinfo.cgi, бо этот файл в каждом скрипте реквестится.
 
Еще нашла переменную $versionnumber нафига она, мне не понятно, в админцентре разве что, так и там она на что? А юзается везде:
 
&output(
-Title   => "$forumname : Что угодно",  
-ToPrint => $output,  
-Version => $versionnumber
);
 
Посносила это.
 
В общем, у меня сейчас все приемлимо по скорости и жручести памяти, кроме поиска. Поиск, наверное, буду на research переводить - скриптина такая стандартная. Она работает по такому принципу - раз в сутки, например, по крону или руками запускаешь индексатора, он все индексит быстренько (ну не быстренько, но не суть), а потом поиск в секунды делается. Потому что инфа из индекса берется. Конечно, не такой гибкий - нету поиска по автору, по названию и т.д., но можно скомбинировать - глобально будет ресиарч искать, а по теме стандартный, хотя он и по теме тоже тормозит, гад.
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 04:21 13-05-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx

Цитата:
В общем, у меня сейчас все приемлимо по скорости и жручести памяти, кроме поиска.  

а ты хоть сравнивала то, что было ДО того, как ты начала "чистку" и после этой самой чистки?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 13:00 13-05-2003
alexei



ibhacker
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shurik
Наверно нет Потому, как я понял, кроме сноса лишних переменных ничего нового применено не было.

Всего записей: 647 | Зарегистр. 06-07-2001 | Отправлено: 19:22 13-05-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik
 

Цитата:
а ты хоть сравнивала то, что было ДО того, как ты начала "чистку" и после этой самой чистки?

 
Да, сравнивала - по размеру свопа сервера, он разрастается до неимоверных размеров, когда часы пик и даже сжирает допустимые для него квоты и никс начинает килять процессы - Апача, разумеется. Сейчас такого нет.
 
 
 
alexei
 

Цитата:
 кроме сноса лишних переменных ничего нового применено не было.

 
Ну, в общем, по большому счету да.
- Переход на css,
- Урез IkonRussian.lib,
- Снос лишних переменных,
- избавление от блоков, где возможно,
- use strict и соотвественно объявление в каждом скрипте переменных пакета, которые будут использованы в данном скрипте.
 
Что еще можно сделать?  
 

Цитата:
Также есть проблема в доступах к файлам(одновременная запись в файл с двух скриптов).

 
Вот это нельзя ли разрулить на примере?
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 20:36 13-05-2003
Shurik



Главком. флейма
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx

Цитата:
Да, сравнивала - по размеру свопа сервера, он разрастается до неимоверных размеров, когда часы пик и даже сжирает допустимые для него квоты и никс начинает килять процессы - Апача, разумеется. Сейчас такого нет.  

даже так?!
а теперь типо все ок? И намного лучше стало?
зы. у тебя форум как сильно посещается, что аж процессы киляются?

----------
Metal Bands...

Всего записей: 3171 | Зарегистр. 11-06-2001 | Отправлено: 21:27 13-05-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shurik
 

Цитата:
 И намного лучше стало?  

 
Ну, как сказать - при той же посещаемости процессы больше не киляются. Посещаемость не большая, просто сервак слабенький. Но мой!!  
 
Тестинги я делала такие - мы с модерами флуд устраивали. Темы создавали и посты отправляли по 20 штук в 10 секунд. Так вот при таком варианте сервак не загибался, то есть своп не вырастал до квоты, но клиент не дожидался ответа и обрывался по таймауту. Понял, нет? То есть для клиента выглядит так: нажимаешь "Отправить" и получаешь "Страница недоступна" после некоторой паузы (величина таймаута). Но сервак не вис, а тихонько перелопачивал эти процессы, я ему  еще снизила KeepAlive timeout, чтобы если уже клиент оборвался, так и сервак процесс завершал.
 
Но это все лирика.
 
На самом деле мне не удалось отловить точного момента - из-за чего у меня своп сжирал ресурсы, хотя это не сложно по акксесс.лог было сделать, но когда я прихожу и Апач убит, то рефректорно сначала стратую Апач, а потом несусь в логи системы, смотреть, что это было. Ребута не было, ага - своп сожрал квоту всю доступную и пошли киляния. Я и без акксесс.лога понимаю, что памяти не хватило и не хватило из-за форума. А логи в этой ситуации ясной картины все равно бы не дали.
 
А сейчас при той же посещаемости такого нет. Повторные тестинги я не проводила, но еще раз хочу подчеркнуть - все мои извраты существенно снизили расход ресурсов сервера (памяти прежде всего) и также отразились на скорости работы. Второе меньше выражено, но оно и было менее критичным. Критичным было память. Но тут это связано.
 
 
Вы лучше скажите, куда мне еще покопать
 
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 02:25 14-05-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Оптимизация кода IB (увеличение скорости работы)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru