私はOCI-LOB::importファイルをデータベースに保存するために使用しています。
memory_limitファイルが大きく、php設定よりも大きい場合はどうなりますか?OCI-LOB::importストリーミングを行い、ファイルデータを小さなチャンクでデータベースに送信しますか?- LOB関連のデータストリーミングを制御できるOCI関数はありますか?たとえば、チャンクサイズを設定する場合などに最も重要です。
私はOCI-LOB::importファイルをデータベースに保存するために使用しています。
memory_limitファイルが大きく、php設定よりも大きい場合はどうなりますか?OCI-LOB::importストリーミングを行い、ファイルデータを小さなチャンクでデータベースに送信しますか?1)大きなデータをlobに書き込むときに、phpのmemory_limitについて心配する必要はありません。
OCI-Lob::write2)関数を使用してチャンクでlobオブジェクトにデータを書き込むことができます
$chunkSize = 1024;
$f = fopen ($filename, 'r');
while ($buf = fread($f, $chunkSize))
{
$lob->write($buf);
}
oci8_lob.cPHP 5.3.18のソースを調べたところ、次のことがわかりました。
OCI-LOB::importファイルデータを読み取り、固定サイズのバッファを使用してLOB記述子に書き込みます。バッファの長さは8192バイトに設定され、ソースにハードコードされています。つまり、OCI-LOB::import8Kサイズのチャンクを使用してデータベースにデータを送信します。OCI-LOB::importソースでハードコーディングされているため、によって使用されるチャンクサイズを変更することはできません。