PHP 8.4.2 Released!

Pdo\Pgsql::lobCreate

(PHP 8 >= 8.4.0)

Pdo\Pgsql::lobCreateСоздает новый большой объект (LOB)

Описание

public Pdo\Pgsql::lobCreate(): string|false

Метод Pdo\Pgsql::lobCreate() создаёт большой объект и возвращает OID, который на него ссылается. Его можно открыть для чтения или записи данных с помощью метода Pdo\Pgsql::lobOpen().

OID может храниться в столбцах типа OID и использоваться для ссылок на большой объект, не вызывая произвольного роста строки. Большой объект будет храниться в базе данных до тех пор, пока его не удалят вызовом метода Pdo\Pgsql::lobUnlink().

Большие объекты громоздки в использовании. Действительно, необходимо, чтобы метод Pdo\Pgsql::lobUnlink() вызывался до удаления последней строки, ссылающейся на OID во всей базе данных; в противном случае большой объект без ссылок будут оставаться на сервере неопределенное время. Кроме того, большие объекты не имеют контроля доступа. Альтернативой является тип столбца bytea, размер которого может достигать 1 ГБ, и этот тип столбца прозрачно управляет хранением для оптимального размера строки.

Замечание: Функция и все манипуляции с большим объектом должны вызываться и выполняться в рамках транзакции.

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

У этой функции нет параметров.

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

Метод возвращает OID только что созданного большого объекта в случае успешного выполнения или false, если возникла ошибка.

Примеры

Пример #1 Пример использования метода Pdo\Pgsql::lobCreate()

В примере создаётся новый большой объект и в него копируется содержимое файла. Затем OID сохраняется в таблице.

<?php
$db
= new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$oid = $db->lobCreate();
$stream = $db->lobOpen($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([$some_id, $oid]);
$db->commit();
?>

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

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top