私は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::write
2)関数を使用してチャンクでlobオブジェクトにデータを書き込むことができます
$chunkSize = 1024;
$f = fopen ($filename, 'r');
while ($buf = fread($f, $chunkSize))
{
$lob->write($buf);
}
oci8_lob.c
PHP 5.3.18のソースを調べたところ、次のことがわかりました。
OCI-LOB::import
ファイルデータを読み取り、固定サイズのバッファを使用してLOB記述子に書き込みます。バッファの長さは8192バイトに設定され、ソースにハードコードされています。つまり、OCI-LOB::import
8Kサイズのチャンクを使用してデータベースにデータを送信します。OCI-LOB::import
ソースでハードコーディングされているため、によって使用されるチャンクサイズを変更することはできません。