PDO::pgsqlLOBCreate
(PHP 5 >= 5.1.2, PHP 7, PHP 8, PECL pdo_pgsql >= 1.0.2)
PDO::pgsqlLOBCreate — Cria um novo objeto grande
Descrição
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
- PDO::pgsqlLOBOpen() - Abre um fluxo de objeto grande existente
- PDO::pgsqlLOBUnlink() - Remove o objeto grande
- pg_lo_create() - Cria um objeto grande