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 — Liefert die aktuelle Lese- oder Schreibposition in einem Large Object
pg_lo_tell() gibt die aktuelle Position (Offset vom Anfang des Large Objects aus) des internen Zeigers zurück.
Um die Large Object (lo) Schnittstelle benutzen zu können, müssen die Kommandos innerhalb einer Transaktion ausgeführt werden.
Die aktuelle Lese- oder Schreibposition in einem (in Bytes) vom Anfang des Large Objects aus. Falls ein Fehler auftritt, ist der Rückgabewert negativ.
Version | Beschreibung |
---|---|
8.1.0 |
Der Parameter lob erwartet nun eine PgSql\Lob-Instanz;
vorher wurde eine Ressource erwartet.
|
Beispiel #1 pg_lo_tell()-Beispiel
<?php
$doc_oid = 189762345;
$database = pg_connect("dbname=jacarta");
pg_query($database, "begin");
$handle = pg_lo_open($database, $doc_oid, "r");
// Überspringe die ersten 50000 Bytes
pg_lo_seek($handle, 50000, PGSQL_SEEK_SET);
// Test, wieviele Bytes übersprungen wurden
$offset = pg_lo_tell($handle);
echo "Die aktuelle Position ist: $offset";
pg_query($database, "commit");
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Die aktuelle Position ist: 50000