PDO::pgsqlLOBCreate

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

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

Описание

public PDO::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_ERRMODEPDO::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();
?>

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