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

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

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

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

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

GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CheRt
За скрипт спасибо, но он мне не подойдет, бо list.cgi у меня не содержит строки обнуленных PLок
Если бы они там были, то и проблем бы не было...
А так: в list.cgi есть не все строки, pl-ки на 60 процентов обнуленные, одна радость, что хоть thd-шки все целые...
 
Ручками оно, конечно, восстанавливается, но уж больно дофига так до второго пришествия восстанавливаться можно. И бэкап, падла, записался с обнуленными файлами - вовремя не заметил...
 
Кстати, насчет "ручного восстановления": а в каком формате дата в PL-ки пишется? А то я что то не разобрался, как ее восстановить...
 
Добавлено:
PS С датой разобрался (не с форматом, а откуда взять) Просто тормознул, она же тоже в THD-шке есть...

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 22:30 23-05-2006
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Дата там везде utime
т.е. считываем в переменную и делаем localtime(utime)
 
За скрипт не надо благодарноси - это так 5минутная заготовка, даже не проверял - слишком простой.
 
Давай подумаем над методом восстановления:
1. что из себя представляет .pl, т.е. структура:

Код:
 
2|Самые дорогие часы в нашей стране|Как вы думаете, кому они принадлежат?|open|2|24|Ptichka|1147541437|Ptichka|1147550889|yes
 

пример с моей борды, 11 элементов(стик хак стоит, иначе 10)
разложим в стек:
0 - ID сообщения
1 - Заголовок(тема)
2 - Описание
3 - статус открытости (open|closed)
4 - кол-во ответов
5 - кол-во просмотров(на разогнанных нету), т.к. сильно тормозит topic.cgi
6 - ник создателя
7 - utime создания
8 - ник последнего
9 - utime последнего
10 - приклееность(yes|no))
 
Теперь возьмем ту же thread(текст сообщений урежу, а то много получится):

Код:
 
Ptichka|Самые дорогие часы в нашей стране|85.30.200.229|yes|yes|1147541437| Владимир Путин носит часы на правой руке - Patek Philippe Perpetual Calendar из белого золота за 60000 долларов. ***
GoDleSS|Самые дорогие часы в нашей стране|212.74.228.232|yes|yes|1147547488|Хорошие часы - это стиль, по ним можно частично определить человека. ***
Ptichka|Самые дорогие часы в нашей стране|85.30.200.229|yes|yes|1147550889|Российские производители часов традиционно работают в сегменте недорогих ***
 

Что мы видим? (разложу в виде двумерного списка @thread)
0 - есть, можно и по файлу узнать
1 - есть $thread[0|1|...][1]
2 - нет
3 - нет
4 - $#thread, в данном случае id последнего элемента списка - кол-во ответов
5 - нет, но часто и не надо, иначе рендомим в заданных пределах
6 - есть $trhead[0][0]
7 - есть $trhead[0][5]
8 - есть $trhead[$#thread][0]
9 - есть $trhead[$#thread][5]
10 - нет
 
Пишем код и с песнями Прямо сейчас писать не буду, но как руки дойдут - не вопрос.


----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 23:55 23-05-2006 | Исправлено: CheRt, 00:10 24-05-2006
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CheRt
2  и 5 есть точно в list.cgi - там  полная копия pl

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 00:03 24-05-2006
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
trew, дык у человека и list.cgi накрылся, а так там полная копия - я же скрипт давал - 5 минут пишется.
Если бы все так просто было


----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 00:11 24-05-2006
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CheRt
Я знаю, что не просто, иначе бы  сделал, - но не получилось
Кроме 2, все остальное можно от фонаря дописать , оно не критично.
Просто у меня в одном разделе обнулился list.cgi а в другом pl и нет никакой зависимости.
Допустим, мы востановим даже вручную, но потом все повторяется опять.
За скрипт, естественно, огромное спасибо!

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 02:51 24-05-2006
GOOSE



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

Цитата:
Пишем код и с песнями  

Хых... "Если бы я мог" (С) Не моё.
Если подкинешь скрипт, у многих (и у меня в первую очередь!) решатся проблемы...
Причем сам скрипт уже выкладывали, но (как я уже говорил) он у меня не работает
 
В общем, если таки скрипт появится, то моя благодарность не будет иметь границ в разумных пределах!
 
ЗЫ Если ручками открыть топик с нулевой ПЛкой и отредактировать, то он появляется, но без остальной информации естественно... что не совсем подходит...
 
Добавлено:
trew

Цитата:
Кроме 2, все остальное можно от фонаря дописать , оно не критично.

У тебя самое важное - это описание? ...по мне, так можно и без него обойтись при пожарном то случае!

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 10:01 24-05-2006
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Короче надо писать скрипт котроля целостности указанной форумной папки.
И если косяк, то предлагать восстановление(какое уж возможно).
 
С универа приду - начну...

----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 10:17 24-05-2006
Marilda

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CheRt
 
Не все так просто. При работе IB2 насерве проявляются баги, не воспроизводимые на локале. А именно порча thd. После этого автоматом портится или обнуляется соответствующая pl-ка => "пропадают темы".  
 
Как ты их программно восстановишь, если даже руками они не восстанавливаются? Достаешь неипорченный thd из бекапа, аплоудишь, а он живет до первой перезаписи и снова портится тем же образом. Зациклишь свою систему контроля.
 
Скрипт местами не дружит с серверным софтом и программами здесь не поможешь, имхо.

Всего записей: 381 | Зарегистр. 24-10-2002 | Отправлено: 20:53 24-05-2006
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Marilda, если где-то возникает проблема - я ее правлю програмно, так что сорри, не имел удовольствия лицезреть этого счастья.
Чтение/запись в критических местах вообще ни разу не глючило!
 

Цитата:
Как ты их программно восстановишь, если даже руками они не восстанавливаются?

Не полностью восстанавливаются. Что смогу, то сделаю. Что у кого и как будет работать - уже не мои проблемы.

----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 21:10 24-05-2006
trew

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

Цитата:
У тебя самое важное - это описание?  

Нет конечно, но если уже делать - то делать
 

Цитата:
Скрипт местами не дружит с серверным софтом и программами здесь не поможешь, имхо.  

Абсолютно согласен с Marilda, это в 99%... Причем добавлю, что если вручную переписать и выставить права, то обнуляется pl  уже вместе с thd, что ни на какие даже логические мысли не наводит.
 
CheRt Мы  все будем благодарны любому продвижению по этой проблеме.  
 

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 22:51 24-05-2006
GOOSE



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

Цитата:
А именно порча thd. После этого автоматом портится или обнуляется соответствующая pl-ка

Таааак... И что именно портится в ТХДэшке? У себя я вроде бы порчи не нашел... Может не туда смотрел? Есть "отловленные" примеры порчи? Проверю у себя.

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 00:27 25-05-2006
Marilda

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

Цитата:
И что именно портится в ТХДэшке

Файл должен иметь вид:
юзер|название_темы|IP|yes|yes|время|пост
юзер|название_темы|IP|yes|yes|время|пост
юзер|название_темы|IP|yes|yes|время|пост
.....
 
Вдруг в один прекрасный день он становится таким, например:
юзер|название_темы|IP|yes|yes|время|пост
юзер|название_темы|IP|yes|yes|время|пост
юзер||IP|yes|yes|время|пост
 
т.е. затирается одно поле. Всё, pl-ка капут.
 

Цитата:
Есть "отловленные" примеры порчи?

Сколько угодно!
 
 
 
 

Всего записей: 381 | Зарегистр. 24-10-2002 | Отправлено: 01:10 25-05-2006
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Marilda
Спасибо!
Посмотрел у себя...
Нашел "порченную" ТХДэшку только ОДНУ! (правда просмотрел не все, конечно, но штук 50 точно) А ПЛок нулевых с полтыщи....

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 14:29 25-05-2006 | Исправлено: GOOSE, 14:30 25-05-2006
trew

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Marilda
А пересчет тем или перенос  тем из форума, где портятся топики, не происходило?

Всего записей: 716 | Зарегистр. 15-11-2003 | Отправлено: 16:55 25-05-2006
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GOOSE,
trew,
Предлагать сохранять в системе копию форума, если форум целостен?


----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 19:32 25-05-2006
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
trew
Я пересчитывал, уменьшается на две темы в счетчике... Но только тогда, когда пересчет давно не делался... Если пересчитывать несколько раз подряд, глюк пропадает.
 
CheRt
Да мне бы просто восстановить Я уж об автоматизации и не думаю....
У меня бэкапит хостер весь форум по крону... ежедневно

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 19:38 25-05-2006
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Первая бета, пользуемся через браузер.
Используем на свой страх и риск, крайне рекомендую сделать бекап перед попыткой восстановления.
 

Код:
 
#!/usr/bin/perl
use CGI qw/param/;
 
my $forumdir='.';
my $forumnum=param('forum'); $forumnum=~s/[^\d]//g;
my $action=param('action');
 
my $header="Content-type:text/html;Charset:windows-1251;\n\n";
 
# begin program
if ($forumnum) {
 if ($action eq 'rebuild') {
  rebuildforum();
  start("Восстановление завершено, проверьте состояние!");
 } else {
  checkforum();
 }
} else {
 &start;
}
 
sub start {
 my $msg=shift;
 my @forums=get_forums();
print <<HTML;
$header
<html>
 <head>
  <title>IB forum tester :: start</title>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
 </head>
 <body>
  $msg<br><br>
 
  <form method="GET" action="$ENV{'SCRIPT_NAME'}">
   <select name="forum">
    <option value="no">Выберите форум:
HTML
 
foreach (@forums) {
 m/forum(\d+)/i;
 print "    <option value=\"$1\">Forum$1<br>\n";
}
 
print <<HTML;
   </select>
   <input type="submit" value="Проверить">
  </form>
 </body>
</html>
HTML
}
 
sub checkforum {
 my @list=get_list();
 my @thds=get_thd(); @thds=sort {$a<=>$b} @thds;
 my @pls=get_pl(); @pls=sort {$a<=>$b} @pls;
 
 my $pl_size=@pls;
 my $thd_size=@thds;
 my $list_size=@list;
 
 my $error="Проверка успешна. Проблем не выявлено.";
 
 if ($list_size!=$pl_size || $thd_size!=$pl_size) {
  if ((($list_size!=$pl_size) && ($pl_size==$thd_size || $list_size==$thd_size)) || ($thd_size>$pl_size && $thd_size>$list_size)) {
   $error="Форум не целостен, <a href=\"$ENV{'SCRIPT_NAME'}?action=rebuild&forum=$forumnum\">восстановить?</a>";
  } else {
   $error="Форум не целостен, восстановлению не подлежит!";
  }
 }
 
print <<HTML;
$header
<html>
 <head>
  <title>IB forum tester :: checking</title>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
 </head>
 <body>
  Number of PLS - $pl_size<br>
  Number of THDS - $thd_size<br>
  List size - $list_size<br>
  $error<br>
  <a href="$ENV{'SCRIPT_NAME'}">to start</a>
 </body>
</html>
HTML
}
 
sub rebuildforum {
 my @list=get_list();
 my @thds=get_thd(); @thds=sort {$a<=>$b} @thds;
 my @pls=get_pl(); @pls=sort {$a<=>$b} @pls;
 
 my $pl_size=@pls;
 my $thd_size=@thds;
 my $list_size=@list;
 
 if ($thd_size==$list_size && $pl_size<$list_size) {
  make_pls_by_list(@list);
 } elsif ($thd_size==$pl_size && $pl_size>$list_size) {
  make_list_by_pls(@pls);
 } elsif ($pls_size<$thd_size && $list_size<$thd_size) {
  make_listandpls_by_thd(@thds);
 }
}
 
sub make_list_by_pls {
 my @pls=@_; my $temp;
 @pls=reverse(@pls);
 my $i;
 
 open(LF, ">>$forumdir/forum$forumnum/list.cgi");
 foreach $i(0..$#pls) {
  open(PLF, "$forumdir/forum$forumnum/$pls[$i]");
   $temp=<PLF>;
  close(PLF);
 
  print LF $temp;
 }
 close(LF);
}
 
sub make_pls_by_list {
 my @list=@_;
 
 foreach (@list) {
  m/^(\d+)\|/;
  open(PLF, ">$forumdir/forum$forumnum/$1.pl");
   print PLF $_;
  close(PLF);
 }
}
 
sub make_listandpls_by_thd {
 my @thds=@_;
 my (@data,@temp,$temp,$i,$j,$k);
 
 open(LF, ">$forumdir/forum$forumnum/list.cgi");
 foreach $i(0..$#thds) {
  @data=();
  open(THF, "$forumdir/forum$forumnum/$thds[$i]");
   $j=0;
   while(<THF>) {
    @temp=split(/\|/, $_);
    for ($k=0;$k<@temp;$k++) {
     $data[$j][$k]=$temp[$k];
    }
    $j++;
   }
  close(THF);
 
  $thds[$i]=~m/^(\d+)\.thd$/i;
 
  open(PLF, ">$forumdir/forum$forumnum/$1.pl");
   $temp=$#data*(int(rand 4)+4)-int(rand 4);
   print PLF "$1|$data[0][1]|-|open|$#data|$temp|$data[0][0]|$data[0][5]|$data[$#data][0]|$data[$#data][5]|no\n";
  close(PLF);
   print LF "$1|$data[0][1]|-|open|$#data|$temp|$data[0][0]|$data[0][5]|$data[$#data][0]|$data[$#data][5]|no\n";
 }
 close(LF);
}
 
sub get_thd {
 opendir(FD, "$forumdir/forum$forumnum");
  @_=grep{/\.thd/i} readdir(FD);
 closedir(FD);
 
 return @_;
}
 
sub get_pl {
 opendir(FD, "$forumdir/forum$forumnum");
  @_=grep{/\.pl/i} readdir(FD);
 closedir(FD);
 
 return @_;
}
 
sub get_list {
 open(LF, "$forumdir/forum$forumnum/list.cgi");
  @_=<LF>;
 close(LF);
 
 return @_;
}
 
sub get_forums {
 opendir(FD, $forumdir);
  @_=readdir(FD);
 closedir(FD);
 
 my @forums;
 my $counter=0;
 
 for (my $i=0;$i<@_;$i++) {
  if ($_[$i]=~m/forum\d{1,2}/i && ! (-f $_[$i])) {
   $forums[$counter]=$_[$i];
   $counter++;
  }
 }
 
 return @forums;
}
 



----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 22:01 25-05-2006
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CheRt
То ли лыжи...
 
У меня ваще ничего не получилось.
Может не то делаю? Дай пояснения, что, куда, как, ОК?

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 22:54 25-05-2006
CheRt



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сохраняем как any_name.pl или any_name.cgi, ставим права 0755
Если не охота настраивать - кидаем в папку скрипта, если не ищет форумы - устанавливаем плный путь к основной скриптовой папке ИБ, допустим
my $forumdir='/home/user_name/public_html/cgi-bin/ib';  
без слэша в конце.
 
Вроде и все

----------
В огне бода нет и не будет!
До встречи в СССР 2.0!

Всего записей: 1118 | Зарегистр. 14-12-2001 | Отправлено: 23:56 25-05-2006
GOOSE



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CheRt
Нифига... 500 Internal Server Error....

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 01:01 26-05-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » IkonBoard и другие форумы » Ikonboard v.2 » Темы форума пропадают


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru