0

私はOCI-LOB::importファイルをデータベースに保存するために使用しています。

  1. memory_limitファイルが大きく、php設定よりも大きい場合はどうなりますか?OCI-LOB::importストリーミングを行い、ファイルデータを小さなチャンクでデータベースに送信しますか?
  2. LOB関連のデータストリーミングを制御できるOCI関数はありますか?たとえば、チャンクサイズを設定する場合などに最も重要です。
4

2 に答える 2

1

1)大きなデータをlobに書き込むときに、phpのmemory_limitについて心配する必要はありません。

OCI-Lob::write2)関数を使用してチャンクでlobオブジェクトにデータを書き込むことができます

$chunkSize = 1024;
$f = fopen ($filename, 'r');
while ($buf = fread($f, $chunkSize))
{
    $lob->write($buf);
}
于 2012-11-15T08:13:26.113 に答える
0

oci8_lob.cPHP 5.3.18のソースを調べたところ、次のことがわかりました。

  1. OCI-LOB::importファイルデータを読み取り、固定サイズのバッファを使用してLOB記述子に書き込みます。バッファの長さは8192バイトに設定され、ソースにハードコードされています。つまり、OCI-LOB::import8Kサイズのチャンクを使用してデータベースにデータを送信します。
  2. OCI-LOB::importソースでハードコーディングされているため、によって使用されるチャンクサイズを変更することはできません。
于 2012-11-15T08:17:29.450 に答える