Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > помогите с SQLite и fork


Автор: DooZ 7.8.2007, 20:33
ругается что база заблокирована
делаю все как написано на сайте
создаю новое подключение к базе в каждом child'е
секунд 20-30 работает нормально, потом пошли ошибки:
DBD::SQLite:smileb do failed: database is locked(5) at dbdimp.c line 402 at

я уже и таймаут ставил, нифига не помогает
как быть? где что поставить надо?
подскажите плиз

Автор: vadiml 8.8.2007, 16:29
может лучше connect сделать 1 раз в главном модуле и везде его использовать? весьма сократятся накладные расходы.

ЗЫ с SQLite не заботал, но в мускуле и постгресе делал именно так. Если это в вебе, то можно использовать общую память.

Автор: DooZ 8.8.2007, 21:39
Цитата(vadiml @ 8.8.2007,  16:29)
может лучше connect сделать 1 раз в главном модуле и везде его использовать? весьма сократятся накладные расходы.

ЗЫ с SQLite не заботал, но в мускуле и постгресе делал именно так. Если это в вебе, то можно использовать общую память.

в SQLite нельзя передавать указатель в чилды в форках это написано на сайте производителя
так же так написано что надо в каждом чилде делать коннект заново
вот я и обратился за помощью, мож кто сталкивался, как преодолеть эту гнустную блокировку правильно?
как работать в форках правильно с SQLite

в чилде надо каждый раз:
select ...
если нет то insert
если есть то на выход

вот где insert там ошибка

Автор: DooZ 9.8.2007, 00:13
вроде работает вариант:
в самом чилде делаем перед подключением:

        while (1)
        {
        $dbh=DBI->connect("dbi:SQLite:dbname=base.db","","");
        sleep(1) and next if ($dbh->err && $dbh->err==5);
        last;
        }

тут подключаемся (ошибка 5 это как раз блокировка)

далее в месте где будем делать insert тот же цикл, только вместо подключения insert вставка

на сколько верный такой способ? плиз подскажите
если есть варианты более лучшие (sleep(1) тормозит на 1 секунду, что не годится)) подскажите?

Автор: DooZ 12.8.2007, 21:05
неужели никто не работал с SQLite ???

Автор: DooZ 26.8.2007, 16:40
ап, может все же найдутся люди кто работал с этой базой + форки?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)