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.
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