(PHP 8 >= 8.4.0)
Pdo\Pgsql::lobOpen — Открывает поток большого объекта
Метод Pdo\Pgsql::lobOpen() открывает поток для доступа к данным,
на которые ссылается идентификатор oid.
Работу с содержимым потока поддерживают все стандартные функции файловой системы
наподобие fread(), fwrite() или fgets().
Замечание:
Функция и все манипуляции с большим объектом должны вызываться и выполняться в рамках транзакции.
oidИдентификатор большого объекта.
mode
Режим доступа. При передаче в параметр mode
значения w или + поток открывается
для чтения и записи; иначе поток открывается только для чтения.
Флаг b, которым устанавливается двоичный режим, игнорируется.
Предустановленное значение "rb" открывает поток для чтения.
При успешном выполнении метод возвращает ресурс потока или false, если возникла ошибка.
Пример #1 Пример открытия большого объекта методом Pdo\Pgsql::lobOpen()
Продолжая пример метода Pdo\Pgsql::lobCreate(), следующий фрагмент кода извлекает большой объект из базы данных и выводит в браузер.
<?php
$db = new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$stmt = $db->prepare("SELECT oid FROM BLOBS WHERE ident = ?");
$stmt->execute([$some_id]);
$stmt->bindColumn('oid', $oid, PDO::PARAM_STR);
$stmt->fetch(PDO::FETCH_BOUND);
$stream = $db->lobOpen($oid, 'r');
header("Content-type: application/octet-stream");
fpassthru($stream);