PDO::pgsqlLOBCreate

(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBCreateСоздать новый большой объект (LOB)

Описание

publicPDO::pgsqlLOBCreate(): string

Функция PDO::pgsqlLOBCreate() создаёт большой объект (LOB) и возвращает его OID. Вы можете открыть поток для чтения или изменения объекта, используя функцию PDO::pgsqlLOBOpen(). OID можно сохранить в столбце типа OID и использовать как ссылку на LOB не вызывая неконтролируемого увеличения размера строк. LOB будет жить в базе данных пока не будет удалён с помощью функции PDO::pgsqlLOBUnlink().

Большие объекты могут быть до 2ГБ размером, но они очень громоздкие. Вы должны убедиться, что выполнили PDO::pgsqlLOBUnlink() до того, как удалите последнюю строку в вашей БД, которая ссылается на его OID. К тому же, большие объекты не имеют контроля доступа. В качестве альтернативы попробуйте использовать тип данных bytea. Последние версии PostgreSQL разрешают столбцы типа bytea до 1ГБ размером и прозрачно управляют табличным пространством для оптимизации длины строк.

Замечание: Эту функцию необходимо выполнять в транзакции.

Список параметров

PDO::pgsqlLOBCreate() не принимает параметров.

Возвращаемые значения

Возвращает OID созданного объекта или false.

Примеры

Пример #1 Пример использования PDO::pgsqlLOBCreate()

В этом примере создаётся LOB и наполняется данными из файла. После этого его OID сохраняется в таблице.

<?php
$db
= new PDO('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$oid = $db->pgsqlLOBCreate();
$stream = $db->pgsqlLOBOpen($oid, 'w');
$local = fopen($filename, 'rb');
stream_copy_to_stream($local, $stream);
$local = null;
$stream = null;
$stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)");
$stmt->execute(array($some_id, $oid));
$db->commit();
?>

Смотрите также

To Top