Hello Martin,

Thursday, January 15, 2004, 6:08:31 PM, you wrote:

> Hello,

> I am noticing a strange effect in php-4.3.5RC1 while using
> dba_open("name", "c", "db4") -- this used to work in php-4.3.3
> (I have both libphp4.so versions and can switch between them)
> but it fails in php-4.3.5RC1 with the error message:

>   Warning: dba_open(...,c):
>   Driver initialization failed for handler: db4: Unable to establish lock

> (no matter if I use "c", "cd" or "ct" for the flags). The only
> possibility to get it working is by using "c-" for $flags.

> Note that in ext/dba/dba_db4.c, I see some clues about a
> db4-internal locking:

> --snip--dba_db4.c::DBA_OPEN_FUNC(db4)
> #ifdef DB_FCNTL_LOCKING
>         gmode |= DB_FCNTL_LOCKING;
> #endif
> --snip--

> so I tried to change the handler[] for db4 to:

> --snip--dba.c::handler[]
> #if DBA_DB4
> #ifdef DB_FCNTL_LOCKING
>         DBA_HND(db4, DBA_LOCK_EXT) /* Locking done in library if set */
> #else
>         DBA_HND(db4, DBA_LOCK_ALL) /* No lock in lib */
> #endif
> #endif
> --snip--

> but that doesn't change the observed behaviour.

> Is it *my* error, or is something really broken in php-4.3.5RC1?

Nice idea but DB_FCNTL_LOCKING has a different meaning. It says go use the
lock that is already set from the process. And it does not mean do create a
lock.

What version of db4 do you have? Is it compiled by your own? are you using a
dba.so? Are you testing on a standard linux fs (extfs3) or what?


-- 
Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to