PHP内存访问

PHP内存访问,php,memory,heap,Php,Memory,Heap,我们可以像在C/C++中那样使用PHP访问一些系统的堆内存吗?事实上,我一直遇到致命错误:在尝试用PHP执行一些大文件操作时,允许的134217728字节内存耗尽了 我知道我们可以在Apache2配置中调整这个限制。但是,对于处理大型未知大小的文件和数据,我们是否可以访问堆来处理和保存文件?此外,如果是,那么是否有一种机制可以在使用后清除内存 示例代码 <?php $filename = "a.csv"; $handle = fopen($filenam

我们可以像在C/C++中那样使用PHP访问一些系统的堆内存吗?事实上,我一直遇到
致命错误:在尝试用PHP执行一些大文件操作时,允许的134217728字节内存耗尽了

我知道我们可以在Apache2配置中调整这个限制。但是,对于处理大型未知大小的文件和数据,我们是否可以访问堆来处理和保存文件?此外,如果是,那么是否有一种机制可以在使用后清除内存

示例代码

<?php
    $filename = "a.csv";
    $handle = fopen($filename, "r");
    $contents = fread($handle, filesize($filename));
    echo $contents;
    fclose($handle);
?>


这里,a.csv是一个80mb的文件。是否可以使用某种指针执行堆操作?

您是否尝试过以块的形式读取文件,例如:

<?php
$chunk = 256 * 256; // set chunk size to your liking
$filename = "a.csv";
$handle = fopen($filename, 'rb');
while (!feof($handle))
{
    $data = fread($handle, $chunk);
    echo $data;
    ob_flush();
    flush();
}
fclose($handle);

如果您解释/显示您尝试执行的文件操作的类型/大小-向我们显示相关代码-可能会有更有效的方法解决您的(内存)问题。信息不足。可能能够以块的形式迭代文件内容,但不超过限制。您现在可以提出建议吗。我已经添加了用于引用的示例代码,因为您告诉过您知道c/c++您应该知道您不会一次打开一个文件,所以这同样适用于任何其他语言。