PHP - 内存限制。试图读取大文件(72mb)

时间:2017-07-03 09:08:39

标签: php file-upload

我有一个处理大文本文件的脚本。 但我受限于文件的大小。 我在这个论坛上做了一些搜索,我得出的结论是我必须逐行处理文件,但是这给我带来了很多问题,因为我需要一些详细的信息在我开始处理它之前,从文件中。

我已经尝试将每一行添加到变量中,如下所示:

$content = "";
$handle = fopen($target_File, "r") or die("Couldn't get handle");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 256);
        // Process buffer here..
        $content .= $buffer;
    }
    fclose($handle);
}

正如预期的那样,它没有用。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

在文件顶部添加

ini_set("memory_limit", -1);

注意,页面可以使用服务器上的所有RAM

答案 1 :(得分:0)

$content = "";
$handle = fopen($target_File, "r") or die("Couldn't get handle");
if ($handle) {
    while (($buffer = fgets($handle, 4096))!== false) {
        // Process buffer here..
        $content .= $buffer;
    }
    fclose($handle);
}

$content = "";
$target_File ="/tmp/uploadfile.txt";
$handle = fopen($target_File, "r") or die("Couldn't get handle");

if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        // Process buffer here.. 
        //$content .= $buffer;
    }
    fclose($handle);
}

注意:

  

如果问题是由达到内存限制引起的,您可以尝试将其设置为更高的值(这可能有效或无效,具体取决于php的配置)。

这会将内存限制设置为32 Mb

ini_set("memory_limit","32M");