PHP.mk документација

dba_open

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.dba-open.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.dba-open.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
dba_open

Референца за `function.dba-open.php` со подобрена типографија и навигација.

function.dba-open.php

dba_open

(PHP 4, PHP 5, PHP 7, PHP 8)

dba_openОтвори база на податоци

= NULL

dba_open(
         string $path,
         string $mode,
         ?string $handler = null,
         int $permission = 0644,
         int $map_size = 0,
         ?int $flags = null
): Dba\Connection|false

dba_open() воспоставува инстанца на базата на податоци за path with mode using handler.

Параметри

path
Обично редовна патека во вашиот датотечен систем.
mode
Тоа е r за пристап само за читање, w за пристап за читање/запишување до веќе постоечка база на податоци, c за пристап за читање/запишување и креирање база на податоци ако моментално не постои, и n за креирање, бришење и пристап за читање/запишување. Базата на податоци се креира во BTree режим, други режими (како Hash или Queue) не се поддржани. Дополнително можете да го поставите методот за заклучување на базата на податоци со следниот знак. Користете l за заклучување на базата на податоци со .lck датотека или d самиот датотека на базата на податоци. Важно е сите ваши апликации да го прават ова конзистентно. Ако сакате да го тестирате пристапот и не сакате да чекате за заклучувањето, можете да додадете t како трет знак. Кога сте апсолутно сигурни дека не ви е потребно заклучување на базата на податоци, можете да го направите со користење - наместо l or d. Кога ништо од d, l or - се користи, dba ќе заклучи на датотеката на базата на податоци како што би било со d.

Забелешка:

Може да има само еден писател за една датотека на базата на податоци. Кога користите dba на веб-сервер и повеќе од едно барање бара операции за запишување, тие можат да се извршуваат само една по друга. Исто така, читањето за време на запишување не е дозволено. Екстензијата dba користи заклучувања за да го спречи ова. Погледнете ја следната табела:

DBA заклучување
веќе отворено mode = "rl" mode = "rlt" mode = "wl" mode = "wlt" mode = "rd" mode = "rdt" mode = "wd" mode = "wd"
= "wdt" ok ok ok ok ok ok ok ok
mode = "rl" ok ok wait false illegal illegal illegal illegal
mode = "wl" wait false wait false illegal illegal illegal illegal
mode = "rd" illegal illegal illegal illegal ok ok wait false
mode = "wd" illegal illegal illegal illegal wait false wait false
  • не е отворено
  • во ред: вториот повик ќе биде успешен. dba_close() чекај: вториот повик чека додека
  • се повикува за прв пат.
  • лажно: вториот повик враќа лажно. "l" and "d" нелегално: не смеете да мешате mode parameter.
handler
Името на handler што ќе се користи за пристап path. Се предаваат сите опционални параметри дадени на dba_open() и може да дејствува во нивно име. Ако handler is null, тогаш се повикува стандардниот ракувач.
permission
Опционално int параметар што се предава на драјверот. Има исто значење како permissions параметарот chmod(), и стандардно е 0644. На db1, db2, db3, db4, dbm, gdbm, ndbmПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во lmdb драјверите поддржуваат permission parameter.
map_size
Опционално int модификатори за Само lmdb драјверот прифаќа map_size parameter.
flags
параметар што се предава на драјверот. Неговата вредност треба да биде множител на големината на страницата на ОС, или нула, за да се користи стандардната големина на мапата. null Знаменца за предавање на драјверите на базата на податоци. Ако DBA_LMDB_USE_SUB_DIR and DBA_LMDB_NO_SUB_DIR.

Вратени вредности

. Споделувањето колачиња помеѓу PHP барањата може да доведе до ненамерно мешање на чувствителни колачиња помеѓу корисниците. Dba\Connection инстанца при успех или false при неуспех.

Errors/Exceptions

false се враќа и E_WARNING се издава грешка од ниво кога handler is null, но нема стандарден обработувач.

Дневник на промени

Верзија = NULL
8.4.0 . Споделувањето колачиња помеѓу PHP барањата може да доведе до ненамерно мешање на чувствителни колачиња помеѓу корисниците. Dba\Connection инстанца сега; претходно, а resource .
8.2.0 flags се додава.
8.2.0 handler сега е null.
7.3.14, 7.4.2 На lmdb драјверот сега поддржува дополнителен map_size parameter.

Види Исто така

  • dba_popen() - Отвори база на податоци постојано
  • dba_close() - Затвори DBA база на податоци

Белешки од корисници 5 белешки

doppelbauer на gmail точка com
19 години пред
Windows does not support locking the database. You may use $_ENV to determine the OS:

$locking = (stripos($_ENV['OS'],'windows') === false ? 'd' : 'l');
ќе се обезбедат стандардните знаменца. Моментално, само LMDB драјверот поддржува следниве знаменца
пред 15 години
Apache doesn't support Berkeley DB Btree, so you can't manipulate use db4 as the type of database if you want to do DBM authentication with Apache.

gdbm seemed to work fine though, even though it supposedly using Btree instead of hash.  It makes you wonder why Apache would use hash for one dbmtype versus btree for another.

So since Apache and PHP don't have options to choose the method for the Berkeley DBs, you are out of luck.
dracoirs на gmail точка com
пред 17 години
As of GDBM version 1.8.3, GDBM's underlying open call uses non-blocking calls to flock() on systems that have flock().  As a result, calls with "rd" or "wd" locking modes will return error ("Can't be reader" or "Can't be writer") instead of waiting.  Use "rl" or "wl" instead, to make PHP do its own locking external to GDBM.
mskala на ansuz точка sooke точка bc точка ca
19 години пред
If you get some strange errors like
dba_open(): myDbFilename.db : Permission denied
than you are propably using PHP on a Windoze machine. You have to make sure that the following conditions are met:

1) Use an absolute path to your db file. Relative paths will cause problems with locking
2) Specify a locking mode - that's the second character of the mode-argument, or else opening a dba-file will cause several notices/warnings etc.

And a final, general note:
3) Always use the english PHP doc on this site - the translations are often old as hell and miss important informations

HTH, Nils.
xy ät affenkrieger.de
пред 18 години
Here's a simple example to use the dba_open function

<?php

$id = dba_open("/tmp/test.db", "n", "gdbm");

if (!$id) {
        echo "dba_open failed\n";
        exit;
}

dba_replace("key", "This is an example!", $id);

if (dba_exists("key", $id)) {
        echo dba_fetch("key", $id);
        dba_delete("key", $id);
}

dba_close($id);
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.