dba_open() establishes a
database instance for path
with mode using handler.
path is commonly a
regular path in your filesystem.
mode is "r" for read
access, "w" for read/write access to an already existing
database, "c" for read/write access and database creation if
it doesn't currently exist, and "n" for create, truncate and
read/write access. Additional you can set the databse lock
method with the next char. Use "l" to lock the database with
an .lck file or "d" to lock the databasefile itself. It is
important that all of your applications do this consistently.
If you want to test the access and do not want to wait for
the lock you can add "t" as third character. When you are
absolutly sure that you do not require database locking you
can do so by using "-" instead of "l" or "d". When none of
"d", "l" or "-" is used dba will lock on the database file as
it would with "d".
handler is the name of the handler
which shall be used for accessing
path. It is passed all optional parameters given to
dba_open() and can act on behalf of
them.
dba_open() returns a positive
handle or FALSE, in the case
the database was opened successfull or fails,
respectively.
注: There can only be one writer for one database file. When you use dba on a webserver and more than one request requires write operations they can only be done one after another. Also read during write is not allowed. The dba extension uses locks to prevent this. See the follwoing table:
表格 1. DBA locking
mode = "rl"mode = "rlt"mode = "wl"mode = "wlt"mode = "rd"mode = "rdt"mode = "wd"mode = "wdt"mode = "rl"mode = "wl"mode = "rd"mode = "wd"
ok: the second call will be successfull.wait: the second call waits until dba_close() is called for the first.false: the second call returns false.illegal: you must not mix "l" and "d" modifiers for mode parameter.
注: Since PHP 4.3.0 it is possible to open database files over network connection. However in cases a socket connection will be used (as with http or ftp) the connection will be locked instead of the resource itself. This is important to know since in such cases locking is simply ignored on the resource and other solutions have to be found.
注: Locking and the mode modifiers "l", "d", "-" and "t" were added in PHP 4.3.0. In PHP versions before PHP 4.3.0 you must use semaphores to guard against simultanious database access for any database handler with the exception of GDBM. See System V semaphore support.
See also: dba_popen()
dba_close()