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 — Retourne la position courante dans un objet de grande taille PostgreSQL
pg_lo_tell() retourne la position courante (à partir du
début) du pointeur de lecture sur l'objet de grande taille large_object
.
Pour utiliser une interface avec un objet de grande taille, il est nécessaire de l'inclure dans un bloc de transaction.
La position courante du pointeur (en nombre d'octets) à partir du début de l'objet de grande taille. S'il y a une erreur, la valeur retournée sera négative.
Version | Description |
---|---|
8.1.0 |
Le paramètre lob attend désormais une instance de
PgSql\Lob ; auparavant, une ressource était attendu.
|
Exemple #1 Exemple avec pg_lo_tell()
<?php
$doc_oid = 189762345;
$database = pg_connect("dbname=jacarta");
pg_query($database, "begin");
$handle = pg_lo_open($database, $doc_oid, "r");
// Saute les 50000 premiers octets
pg_lo_seek($handle, 50000, PGSQL_SEEK_SET);
// On vérifie combien d'octets nous avons sauté
$offset = pg_lo_tell($handle);
echo "Position du pointeur est : $offset";
pg_query($database, "commit");
?>
L'exemple ci-dessus va afficher :
Position du pointeur est : 50000