Автор Тема: Очень нужна помощь. Скрипт перестал работать  (Прочитано 4264 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Pendulum

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Здравствуйте, уважаемы создатели скрипта!

Полтора года sanitarium работал прекрасно и тут БАЦ! - престал. При попытке создать категорию или новость пишет ошибку

Error: Can\'t flock DATABASE, reason: Operation not supported at /usr/home/10134/asiatimes.ru/html/news2/admin/admin.cgi line 191

Переустановил скрипт, настроил как надо и всё равно пишет это.

Как быть? Очень жду ответа

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Очень нужна помощь. Скрипт перестал работать
« Ответ #1 : 17 Декабря 2004, 15:03:58 »
1. а если чистый санитар поставить работает?
проверьте, будет ли все ОК,

2 если в cfg.cfg выключить блокировку файла
cfg.cfg:
$use_flock=0;
проверять желательно там, где нет реальной информации.
если все заработает, то не стоит радоваться - с отключенной блокировкой он работать будет не долго, поэтому о результатах эксперимента желательно рассказать тут.
 в исканиях.

Оффлайн Pendulum

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Очень нужна помощь. Скрипт перестал работать
« Ответ #2 : 17 Декабря 2004, 15:19:22 »
Чистый санитар с теми же настройками ставил, но без изменений. Странно, до этого работал без сбоев.

После отключения этой функции всё заработало. Радоваться не буду, посмотрим.

Большое спасибо!

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Очень нужна помощь. Скрипт перестал работать
« Ответ #3 : 17 Декабря 2004, 15:44:17 »
Цитировать
Pendulum:
После отключения этой функции всё заработало. Радоваться не буду, посмотрим.

Большое спасибо!

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

open (DATA, ">file")||die("$!");
flock(DATA,2)||die("Can\'t flock DATABASE, reason: $!");

И выдает сообщение:
Can\'t flock DATABASE, reason: Operation not supported

т.е. система почему-то ругается на стандартную операцию блокировки.
 в исканиях.

Оффлайн Pendulum

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Очень нужна помощь. Скрипт перестал работать
« Ответ #4 : 20 Декабря 2004, 12:36:12 »
вот что мне напели hoster.ru:

Действительно, функция flock не работает на NFS.
Место нее рекомендуется использовать Fcntl.
Дополнительную информацию можно посмотреть perldoc -f flock.


если не сложно, объясните, как это понимать :)

Оффлайн Pendulum

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Очень нужна помощь. Скрипт перестал работать
« Ответ #5 : 20 Декабря 2004, 14:14:13 »
надо заменить функцию флока на эту

#!/usr/bin/perl

use File::NFSLock qw(uncache);
      use Fcntl qw(LOCK_EX LOCK_NB);

      my $file = "./somefile";

      ### set up a lock - lasts until object looses scope
      if (my $lock = new File::NFSLock {
        file      => $file,
        lock_type => LOCK_EX|LOCK_NB,
        blocking_timeout   => 10,      # 10 sec
        stale_lock_timeout => 30 * 60, # 30 min
      }) {

        ### OR
        ### my $lock = File::NFSLock->new($file,LOCK_EX|LOCK_NB,10,30*60);

        ### do write protected stuff on $file
        ### at this point $file is uncached from NFS (most recent)
        open(FILE, "+<$file") || die $!;

        ### or open it any way you like
        ### my $fh = IO::File->open( $file, \'w\' ) || die $!

        ### update (uncache across NFS) other files
        uncache("someotherfile1");
        uncache("someotherfile2");
        # open(FILE2,"someotherfile1");

        ### unlock it
        $lock->unlock();
        ### OR
        ### undef $lock;
        ### OR let $lock go out of scope
      }else{
        die "I couldn\'t lock the file [$File::NFSLock::errstr]";
      }


подскажите, пожалуйста, где менять?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28