Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Русский IkonBoard »   Форум поддержки русской версии IkonBoard »   Пропадают топики...
RSS

Пропадают топики...

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Модератор: GramПечать
 
Glavbuh
Новичок


Всего сообщений: 11
Рейтинг пользователя: 0





Дата регистрации на форуме:
17 фев. 2004
Эта проблема здесь уже обсуждалась, но как-то не нашла активной поддержки.
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
Да, и еще - если проблема не решаема, то может кто-нибудь (местный гуру) проверит корректность приведенного скрипта на предмет правильного заполнения файлов *.pl под Русский Иконбоард, чтобы все поля писались какие нужно и куда нужно.

---
Даже если вас съели - у вас всегда есть два выхода...
Gram
Модератор раздела

Gram
Откуда: здешний
Всего сообщений: 566
Рейтинг пользователя: 14

Репутация пользователя: 1




Дата регистрации на форуме:
23 июля 2003
Ну во-первых, вопос уже много раз обсуждался и все пришли к выводу, что обнуление файлов *.pl вызвано тормознутостью сервера, на ктором хотится форум! В моем случае так и было - сначала хостился на халявном хостинге и темы пропадали очень часто (ну просто очень) Переехал на платный хостинг и все разрешилось... Вроде темы не пропадают.
Ну и к тому же у меня посещаемость в среднем 200-300 уникальных посетителей в день...
[q]
может кто-нибудь (местный гуру) проверит корректность приведенного скрипта на предмет правильного заполнения файлов *.pl под Русский Иконбоард, чтобы все поля писались какие нужно и куда нужно.
[/q]

Ну я все скрипты просматривал на факт неправильного заполнения *.pl. Ничего особо страшного не нашел. Проблема не в скриптах - это я могу гарантировать на 97%. Есть идея, что если отключить запись просмотров, то проблема с пропажей ликвидируется... Просто при каждом просмотре топика перезаписывается сначала файл allforums.cgi а потом из него берется инфа и пишется в *.pl - вот если это убрать, то я думаю темы пропадать не будут...
Glavbuh
Новичок


Всего сообщений: 11
Рейтинг пользователя: 0





Дата регистрации на форуме:
17 фев. 2004
Во!!! Мне эти просмотры нафик не нужны - тока нагрузка на сервак. А как их отключить-то? подскажите плиз подробненько? Заранее респект...

---
Даже если вас съели - у вас всегда есть два выхода...
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик

Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Надо закомментировать вот этот кусок кода (в файле 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
Спасибо огромное. Отключил код в topic.cgi и forum.cgi - "30 минут - полет нормальный..." :)

---
Даже если вас съели - у вас всегда есть два выхода...
<<Назад  Вперед>>Модератор: GramПечать
Объединенный Открытый Проект »   Русский IkonBoard »   Форум поддержки русской версии IkonBoard »   Пропадают топики...
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0545. Количество выполненных запросов: 18, время выполнения запросов 0.0139