PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Používám SQLite3 (extension 0.7-dev, verze SQLite 3.6.22) v malé client-server aplikaci, ve které se data od každého clienta (využívají ji 4 lidé) aktualizují každých 45 s (což znamená 1 UPDATE a 1 SELECT). Stejnou databázi pak používá i jednoduchý frontend napsaný v Nette. Laděnka mi však ale čas od času (občas den nic, pak pětkrát za den…) loguje ‚database is locked‘. S sqlite extension se mi tohle nestávalo (aspoň si to nepamatuji) a tak jsem se podíval, jak to vlastně SQLite řeší v případě několika konkurenčních připojeních. V sqlite (míněna stará extension) tohle řeší sqlite_busy_timeout, který je ve výchozím nastavení 60s, chyba se vyhodí až když se nepodaří během 60s provést požadovanou akci. SQLite3 však, zdá se, podobnou metodu nemá a vypadá to, že chybu vrací vždy bez čekání (přiznám se, zdrojáky SQLite3 jsem nezkoumal).
Je opravdu SQLite3 extension tak hloupá, že se nedá narozdíl od staré verze pro podobné účely použít, nebo je chyba mezi klávesnicí a židlí? Samozřejmě mě napadl workaround v podobě transakce, kterou bych se v případě chyby pokusil provést znovu, ale nepřijde mi to zrovna jako šťastné řešení…