PHPのお勉強!

PHP TOP

pg_lo_tell

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_lo_tell ラージオブジェクトのカレントのシーク位置を返す

説明

pg_lo_tell(PgSql\Lob $lob): int

pg_lo_tell() は、ラージオブジェクトのカレントの位置 (先頭からのオフセット)を返します。

ラージオブジェクトインターフェイスは、トランザクションブロックの中で 使用する必要があります。

パラメータ

lob

pg_lo_open() が返した PgSql\Lob クラスのインスタンス。

戻り値

ラージオブジェクトの先頭からのカレントのシーク位置(バイト数)を返します。 エラーが発生した場合は、負の数を返します。

変更履歴

バージョン 説明
8.1.0 lob は、PgSql\Lob クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。

例1 pg_lo_tell() の例

<?php
$doc_oid
= 189762345;
$database = pg_connect("dbname=jacarta");
pg_query($database, "begin");
$handle = pg_lo_open($database, $doc_oid, "r");
// 最初の 50000 バイトをスキップする
pg_lo_seek($handle, 50000, PGSQL_SEEK_SET);
// どれだけスキップしたのかを調べる
$offset = pg_lo_tell($handle);
echo
"Seek position is: $offset";
pg_query($database, "commit");
?>

上の例の出力は以下となります。

Seek position is: 50000

参考

  • pg_lo_seek() - ラージオブジェクトの位置をシークする

add a note

User Contributed Notes 1 note

up
0
Marv-CZ
14 years ago
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;
}
?>