【发布时间】:2020-10-24 08:59:06
【问题描述】:
我们可以像在 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 的文件。可以使用某种指针进行堆操作吗?
【问题讨论】:
-
如果您解释/显示您尝试执行的文件操作的类型/大小 - 向我们展示相关代码 - 可能会有更有效的方法来解决您的(内存)问题。
-
信息不足。可能能够以块的形式迭代文件内容,但不超过限制。
-
您现在可以提出一些建议吗?我添加了示例代码供参考
-
正如你所说的你知道 c/c++,你应该知道你不会一次打开文件,所以同样适用于任何其他语言。
标签: php memory heap-memory