PDO::pgsqlLOBCreate

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

PDO::pgsqlLOBCreateCria um novo objeto grande

Descrição

public PDO::pgsqlLOBCreate(): string

PDO::pgsqlLOBCreate() cria um objeto grande e retorna o OID desse objeto. Pode-se então abrir um fluxo no objeto usando PDO::pgsqlLOBOpen() para ler ou gravar dados nele. O OID pode ser armazenado em colunas do tipo OID e usado para fazer referência ao objeto grande, sem fazer com que a linha cresça arbitrariamente. O objeto grande continuará no banco de dados até ser removido chamando PDO::pgsqlLOBUnlink().

Objetos grandes podem ter até 2 GB de tamanho, mas são complicados de usar; é necessário garantir que PDO::pgsqlLOBUnlink() seja chamado antes de excluir a última linha que referencia seu OID no banco de dados. Além disso, objetos grandes não possuem controles de acesso. Como alternativa, pode-se experimentar o tipo de coluna bytea; versões recentes do PostgreSQL permitem colunas bytea de até 1 GB de tamanho e gerenciam o armazenamento de forma transparente para obter o tamanho de linha ideal.

Note: Esta função deve ser chamada dentro de uma transação.

Parâmetros

PDO::pgsqlLOBCreate() não tem nenhum parâmetro.

Valor Retornado

Retorna o OID do objeto grande recentemente criado em caso de sucesso ou false em caso de falha.

Exemplos

Example #1 Um exemplo de PDO::pgsqlLOBCreate()

Este exemplo cria um novo objeto grande e copia nele o conteúdo de um arquivo. O OID é então armazenado em uma tabela.

<?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();
?>

Veja Também