Re: Req #51295: busyTimeout method for SQLite3
| From: | Mark Karpeles | Date: | Sun, 14 Mar 2010 08:14:41 +0000 |
| Subject: | Re: Req #51295: busyTimeout method for SQLite3 | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-47255@lists.php.net to get a copy of this message | ||
Hi,
I checked around PDO (which I don't use at all, but the source is
usually a good documentation).
The timeout can be changed for SQLite and SQLite3 PDO drivers with:
$pdo->setAttribute(PDO::ATTR_TIMEOUT, <value_in_seconds>)
I see that PDO::ATTR_TIMEOUT is not documented on
http://php.net/manual/en/pdo.setattribute.php
- it might be a good idea
to fix this :)
Mark
Le dimanche 14 mars 2010 à 09:57 +0200, Jess Portnoy a écrit :
> Hello Mark,
>
> Note that while indeed sqlite3_busy_timeout() is not extended by the
> SQLite3 and PDO_SQLITE extensions, it is called internally in
> ext/pdo_sqlite/sqlite_driver.c.
> I think it is a good idea to extend it but also, that if you do, it
> should probably also be done for PDO_SQLITE as it may be useful there as
> well.
>
> May the source be with you,
> Best regards,
> Jess Portnoy
>
>
>
> Mark Karpeles wrote:
> > Hello,
> >
> > I've been encountering a problem with SELECT queries and SQLite3 as load
> > was growing on my system. From times to times I was getting this error:
> >
> > Warning: SQLite3Stmt::execute(): Unable to execute statement: database
> > is locked
> >
> > After searching on google I saw I should call sqlite3_busy_timeout() and
> > found out that there was no way to call it from the SQLite3 extension
> > (which is new to PHP 5.3.x).
> >
> > Here's a patch that will add this method to the SQLite3 class:
> >
> > http://bugs.php.net/51295
> > https://ookoo.org/svn/snip/php_5_3-sqlite3-busytimeout-method.patch®œH
> > $cúSN4yq¼CŸ
> >
> > Any comment welcome.
> >
> >
> > Mark
> >
> >
> >