PHP oci_fetch_数组导致内存不足错误

PHP oci_fetch_数组导致内存不足错误,php,oracle,out-of-memory,Php,Oracle,Out Of Memory,我正在运行一个查询并使用OCI\u FETCH\u ARRAY进行检索,我遇到了一个致命错误,在我访问了一定数量的记录后内存不足。结果数组是100k行和大约60列。 我将php.ini中的内存限制设置为2 gig memory_limit = 2056M 当我有多个人同时运行脚本时(或者同一个人运行两次设置为在后台运行的脚本),就会出现这种情况。 只需2个100k记录的并发作业即可导致错误。 我在OCI_FETCH_数组中找到的所有内容都表明,它没有将整个结果集缓存到内存中,但看起来确实如此

我正在运行一个查询并使用
OCI\u FETCH\u ARRAY
进行检索,我遇到了一个致命错误,在我访问了一定数量的记录后内存不足。结果数组是100k行和大约60列。
我将php.ini中的内存限制设置为2 gig

memory_limit = 2056M
当我有多个人同时运行脚本时(或者同一个人运行两次设置为在后台运行的脚本),就会出现这种情况。 只需2个100k记录的并发作业即可导致错误。 我在OCI_FETCH_数组中找到的所有内容都表明,它没有将整个结果集缓存到内存中,但看起来确实如此

这是我的代码(非常简单)

OCI_FETCH_ARRAY语句在命中一定数量的循环后发生错误


输出文件仅为94m(平均值),因此似乎我不应该处于内存限制的任何位置。

以下代码导致内存使用率高:

array_push($resultfile,$row);

oci_fetch_数组是无缓冲的,这意味着它将逐个提取行,直到不存在任何行为止。我建议不要将行推入另一个数组。相反,在循环本身时,将逻辑写入内部

以下代码导致内存使用率高:

array_push($resultfile,$row);

oci_fetch_数组是无缓冲的,这意味着它将逐个提取行,直到不存在任何行为止。我建议不要将行推入另一个数组。相反,在循环本身时,将逻辑写入内部

您正在构建一个巨大的内存阵列(
$resultfile
)这一事实无助于。。。。最好是在读取时处理每条记录,而不是将其存储在一个不断增长的数组中,然后再处理该数组存储标记,知道为什么它只在oci_fetch_数组调用而不是数组推送时失败吗?其次,这个文件是94mb,那么如果我在一个数组中将内存限制设置为2gb.100k行,每个行有60列,为什么3个并发实例会导致内存问题。。。。这是10万个阵列,有600万个值。。。。对于每个数组和每个元素,在添加数据大小之前,通常会有48字节的开销,因此使用6100000*48字节。事实上,构建一个巨大的内存数组(
$resultfile
)并没有帮助。。。。最好是在读取时处理每条记录,而不是将其存储在一个不断增长的数组中,然后再处理该数组存储标记,知道为什么它只在oci_fetch_数组调用而不是数组推送时失败吗?其次,这个文件是94mb,那么如果我在一个数组中将内存限制设置为2gb.100k行,每个行有60列,为什么3个并发实例会导致内存问题。。。。这是10万个阵列,有600万个值。。。。对于每个数组和每个元素,通常需要48字节的开销,在添加数据本身的大小之前,您使用的是6100000*48字节