(PHP 5 >= 5.1.2, PECL pdo_pgsql >= 1.0.2)
PDO::pgsqlLOBCreate — Yeni bir büyük nesne oluşturur
PDO::pgsqlLOBCreate() yöntemi bir büyük nesne oluşturup bu nesnenin nesne kimliğini (OID) döndürür. Bu nesne üzerinde okuma/yazma işlemleri yapmak için PDO::pgsqlLOBOpen() ile nesneye bir akım açabilirsiniz. Satırın anlamsız şekilde büyümemesi için nesne kimliği OID türündeki sütunlarda saklanabilir ve nesneye erişmek için bu OID kullanılabilir. Büyük nesneler PDO::pgsqlLOBUnlink() çağrılarıyla silinmedikleri sürece veritabanında saklanırlar.
Büyük nesneler en fazla 2GB büyüklükte olabilirler, fakat bu derece büyük bir nesne kullanışsızdır. Veritabanınızdan OID'i içeren satırı silmeden önce nesneyi silmek için PDO::pgsqlLOBUnlink() çağrısı yapmayı unutmayın. Ayrıca, büyük nesnelere erişim denetlenemez. Bunun yerine bytea sütun türünü deneyebilirsiniz. PostgreSQL'in son sürümleri bytea türündeki alanlarda 1GB'a kadar büyüklüğe izin vermekte ve en uygun satır boyutuyla saklamak için şeffaf olarak yönetilebilmektedir.
Bilginize: Bu işlevin bir toplu hareketin içinden çağrılması gerekir.
PDO::pgsqlLOBCreate() işlevinin değiştirgesi yoktur.
Başarısızlık durumunda FALSE, yoksa oluşturulan büyük nesnenin nesne kimliği döner.
Örnek 1 - PDO::pgsqlLOBCreate() örneği
Bu örnekte bir büyük nesne oluşturulmakta ve içeriği bir dosyaya kopyalanmaktadır. Ardından nesne kimliği bir tabloda saklanmaktadır.
<?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();
?>