PHP 内存访问

PHP Memory access

我们可以像 C/C++ 那样使用 PHP 访问系统的一些堆内存吗?实际上,在 PHP.

中尝试执行一些大文件操作时,我一直收到 Fatal error: Allowed memory size of 134217728 bytes exhausted

我知道我们可以在 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);