0

我正在使用OCI-LOB::import将文件存储到数据库中。

  1. 如果文件很大,大于 phpmemory_limit设置会发生什么?是否会OCI-LOB::import以较小的块进行流式传输并将文件数据发送到数据库?
  2. 是否有任何 OCI 功能可以控制与 LOB 相关的数据流?最重要的是,例如设置块大小。
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

从 PHP 5.3.18 源码检查后oci8_lob.c发现

  1. OCI-LOB::import使用固定大小的缓冲区读取文件数据并写入 LOB 描述符。缓冲区的长度设置为 8192 字节,并且在源代码中进行了硬编码。这意味着,OCI-LOB::import使用 8K 大小的块将数据发送到数据库。
  2. 无法修改 使用的块大小,OCI-LOB::import因为它在源代码中是硬编码的。
于 2012-11-15T08:17:29.450 回答