Пропадают топики...
Текущий рейтинг темы: Нет
| Glavbuh
Новичок
Всего сообщений: 11 Рейтинг пользователя: 0
Дата регистрации на форуме: 17 фев. 2004
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 17 февраля 2004 8:15
Эта проблема здесь уже обсуждалась, но как-то не нашла активной поддержки. http://xxxxpro.ru/cgi-bin/ikonboard/topic.cgi?forum=10&topic=1194 Возникает вопрос - неужели она достаточно редкая? Описание проблемы: Пропадают топики с форума в результате обнуления или неправильной записи (частично как-то) файлов *.pl. Сами топики остаются в виде фалов *.thd, и если соответствующий файл *.pl поправить, то они восстанавливаются, но проблема этим не решается. Наблюдаю эту проблему на форуме с посещаемостью 1500-2000 уникальных посещений в сутки. За сутки может пропасть таким образом до 20% топиков. Раньше я юзал версию Иконбоард из Руборда, но вот щас поставил Русский Иконбоард (местный), но проблема, к сожалению осталась. Локализовать ее не могу, так как технической подготовки не хватает. Решаю ее сейчас как и раньше с помощью специального "ремонтного" скрипта, который запускаю переодически. Даю его текст полностью: ---------------------- #!/usr/bin/perl use Fcntl ':flock'; use CGI qw(:standard); require "ikon.lib"; require "data/progs.cgi"; require "data/boardinfo.cgi"; print header(); # поменяй на номер форума rebuildLIST2(1); sub rebuildLIST2 { my ($forum) = @_; opendir (DIR, "$ikondir" . "forum$forum"); my @entry = grep(/pl/, readdir(DIR)); closedir (DIR); open (TMP, "$ikondir" . "forum$forum/list.cgi"); flock(TMP,LOCK_SH); my @listf = <TMP>; foreach (@listf){ chomp $_; my ($topicids) = split (/\|/,$_); $liststruct{$topicids} = [split (/\|/,$_)]; } flock(TMP,LOCK_UN); close (TMP); undef @listf; my @dat; foreach my $lol (@entry){ my $rr; my ($id) = split(/\./, $lol); open (TMP, "$ikondir" . "forum$forum/$id.pl"); flock(TMP,LOCK_SH); my ($topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split (/\|/,<TMP>); flock(TMP,LOCK_UN); close (TMP); open (TMP, "$ikondir" . "forum$forum/$id.thd"); flock(TMP,LOCK_SH); my @thds = <TMP>; my ($startedby, $topictitle, undef, undef, undef, $startedpostdate) = split(/\|/,$thds[0]); flock(TMP,LOCK_UN); close (TMP); next if (length(join('', @thds)) < 5 || $topictitle eq ""); $topicid = $topicid ne "" ? $topicid : $id; $threadstate = $threadstate ne "" ? $threadstate : "open"; $threadposts = $threadposts ne "" ? $threadposts : $#thds; $threadviews = $threadviews ne "" ? $threadviews : $#thds; my ($lastposter, undef, undef, undef, undef, $lastpostdate) = split(/\|/,$thds[$#thds]); $topicdescription =~ s/(::::)(.*?)\b//; open (FILE, ">$ikondir" . "forum$forum/$id.pl"); flock(FILE,LOCK_EX); print FILE "$topicid|$topictitle|$topicdescription|$threadstate|$threadposts|$threadviews|$startedby|$startedpostdate|$lastposter|$lastpostdate"; flock(FILE,LOCK_UN); close (FILE); push (@dat, "$lastpostdate|$topicid|$topictitle|$topicdescription|$threadstate|$threadposts|$threadviews|$startedby|$startedpostdate|$lastposter"); } my @sortdat = reverse(sort(@dat)); open (LIST, ">$ikondir" . "forum$forum/list.cgi"); flock(FILE,LOCK_EX); foreach (@sortdat) { chomp $_; next if(! $_); my ($lastpostdate, $topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter) = split (/\|/,$_); print LIST "$topicid|$topictitle|$topicdescription|$threadstate|$threadposts|$threadviews|$startedby|$startedpostdate|$lastposter|$lastpostdate\n" if ($topictitle); } flock(FILE,LOCK_UN); close (LIST); }
---------------------- Есть предположения, что проблема кроется где-то в работе сервера, который как-то некорректно выполняет скрипты, в результате чего файлы *.pl и портятся. Но может все не так? Я пробовал уже разные хостинги - и платные и бесплатные, проблема все равно присутствует. Но вот когда борда поскромнее в объемах, типа 200-300 посетителей в сутки, то такой проблемы не наблюдается. Подскажите - где "порыта собака"? И есть ли у кого-нибудь подобные проблемы? (Сообщение отредактировал Glavbuh 17 фев. 2004 11:31)
--- Даже если вас съели - у вас всегда есть два выхода...
| | | |
| Glavbuh
Новичок
Всего сообщений: 11 Рейтинг пользователя: 0
Дата регистрации на форуме: 17 фев. 2004
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 17 февраля 2004 8:22
Да, и еще - если проблема не решаема, то может кто-нибудь (местный гуру) проверит корректность приведенного скрипта на предмет правильного заполнения файлов *.pl под Русский Иконбоард, чтобы все поля писались какие нужно и куда нужно.
--- Даже если вас съели - у вас всегда есть два выхода...
| | | |
Gram
Модератор раздела
 Откуда: здешний Всего сообщений: 566 Рейтинг пользователя: 14 Репутация пользователя: 1Дата регистрации на форуме: 23 июля 2003
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 17 февраля 2004 9:47
Ну во-первых, вопос уже много раз обсуждался и все пришли к выводу, что обнуление файлов *.pl вызвано тормознутостью сервера, на ктором хотится форум! В моем случае так и было - сначала хостился на халявном хостинге и темы пропадали очень часто (ну просто очень) Переехал на платный хостинг и все разрешилось... Вроде темы не пропадают. Ну и к тому же у меня посещаемость в среднем 200-300 уникальных посетителей в день... [q] может кто-нибудь (местный гуру) проверит корректность приведенного скрипта на предмет правильного заполнения файлов *.pl под Русский Иконбоард, чтобы все поля писались какие нужно и куда нужно.[/q]
Ну я все скрипты просматривал на факт неправильного заполнения *.pl. Ничего особо страшного не нашел. Проблема не в скриптах - это я могу гарантировать на 97%. Есть идея, что если отключить запись просмотров, то проблема с пропажей ликвидируется... Просто при каждом просмотре топика перезаписывается сначала файл allforums.cgi а потом из него берется инфа и пишется в *.pl - вот если это убрать, то я думаю темы пропадать не будут...
| | | |
| Glavbuh
Новичок
Всего сообщений: 11 Рейтинг пользователя: 0
Дата регистрации на форуме: 17 фев. 2004
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 17 февраля 2004 10:33
Во!!! Мне эти просмотры нафик не нужны - тока нагрузка на сервак. А как их отключить-то? подскажите плиз подробненько? Заранее респект...
--- Даже если вас съели - у вас всегда есть два выхода...
| | | |
| 4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
Откуда: Москва Всего сообщений: 2994 Рейтинг пользователя: 79
Дата регистрации на форуме: 29 сен. 2001
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 17 февраля 2004 11:03
Надо закомментировать вот этот кусок кода (в файле topic.cgi): <br> open(FILE, ">$filetoopen");<br> flock(FILE, 2);<br> print FILE $processed_data;<br> close(FILE);<br> undef $processed_data;<br> my $file = "$ikondir" . "forum$inforum/$intopic.pl";<br> open(MSG, ">$file");<br> flock(MSG, 2);<br> print MSG $linetokeep;<br> close(MSG); <br> Еще можно в forums.cgi найти кусок, отвечающий за их вывод и тоже убрать (чтобы не смущать пользователей сообщением о нуле просмотров).
--- Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
| | | |
| Glavbuh
Новичок
Всего сообщений: 11 Рейтинг пользователя: 0
Дата регистрации на форуме: 17 фев. 2004
|
Профиль | Сообщить модератору | ИгнорироватьNEW! Сообщение отправлено: 17 февраля 2004 12:14
Спасибо огромное. Отключил код в topic.cgi и forum.cgi - "30 минут - полет нормальный..." 
--- Даже если вас съели - у вас всегда есть два выхода...
| | | |
Время выполнения скрипта: 0.0248. Количество выполненных запросов: 18, время выполнения запросов 0.0134
|