Function to take a large object size:
<?php
function pg_lo_size ($lo) {
$pos = pg_lo_tell ($lo);
pg_lo_seek ($lo, 0, PGSQL_SEEK_END);
$size = pg_lo_tell ($lo);
pg_lo_seek ($lo, $pos, PGSQL_SEEK_SET);
return $size;
}
?>
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_lo_tell — Devuelve la posición actual en un objeto grande de PostgreSQL
pg_lo_tell() devuelve la posición actual (desde el
inicio) del puntero de lectura en el objeto grande large_object
.
Para utilizar una interfaz con un objeto grande, es necesario incluirlo en un bloque de transacción.
lob
An PgSql\Lob instance, returned by pg_lo_open().
La posición actual del puntero (en número de bytes) desde el inicio del objeto grande. Si hay un error, el valor devuelto será negativo.
Versión | Descripción |
---|---|
8.1.0 |
The lob parameter expects an PgSql\Lob
instance now; previously, a recurso was expected.
|
Ejemplo #1 Ejemplo con pg_lo_tell()
<?php
$doc_oid = 189762345;
$database = pg_connect("dbname=jacarta");
pg_query($database, "begin");
$handle = pg_lo_open($database, $doc_oid, "r");
// Salta los primeros 50000 bytes
pg_lo_seek($handle, 50000, PGSQL_SEEK_SET);
// Se verifica cuántos bytes se han saltado
$offset = pg_lo_tell($handle);
echo "La posición del puntero es: $offset";
pg_query($database, "commit");
?>
El resultado del ejemplo sería:
La posición del puntero es: 50000