Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 缓存大型阵列会导致内存耗尽_Php_Caching_File Upload_Multidimensional Array - Fatal编程技术网

Php 缓存大型阵列会导致内存耗尽

Php 缓存大型阵列会导致内存耗尽,php,caching,file-upload,multidimensional-array,Php,Caching,File Upload,Multidimensional Array,所以我试图在文件中缓存一个数组,并在其他地方使用它 import.php 现在,我将recordset.php包含在某处.php中,以使用其中存储的数组。当上传的CSV文件有5000行时,它可以正常工作。例如,如果我尝试上传50000行的CSV文件,我会遇到一个致命错误: 致命错误:允许的内存大小67108864字节已用尽,尝试分配79691776字节 我如何修复它,或者是否有一种可能的方法以更方便的方式实现我想要的?说到表演。。。我应该考虑服务器的CPU吗?我已经覆盖了内存限制,并在某处将其设

所以我试图在文件中缓存一个数组,并在其他地方使用它

import.php

现在,我将recordset.php包含在某处.php中,以使用其中存储的数组。当上传的CSV文件有5000行时,它可以正常工作。例如,如果我尝试上传50000行的CSV文件,我会遇到一个致命错误:

致命错误:允许的内存大小67108864字节已用尽,尝试分配79691776字节


我如何修复它,或者是否有一种可能的方法以更方便的方式实现我想要的?说到表演。。。我应该考虑服务器的CPU吗?我已经覆盖了内存限制,并在某处将其设置为-1。php有两种方法可以解决此问题:

您需要增加服务器上的memoryRAM,因为内存限制只能使用服务器上可用的内存。看起来PHP的可用内存非常低。 要检查Linux服务器上的总RAM,请执行以下操作:

<?php
  $fh = fopen('/proc/meminfo','r');
  $mem = 0;
  while ($line = fgets($fh)) {
    $pieces = array();
    if (preg_match('/^MemTotal:\s+(\d+)\skB$/', $line, $pieces)) {
      $mem = $pieces[1];
      break;
    }
  }
  fclose($fh);

  echo "$mem kB RAM found"; ?>
资料来源:

您应该分块解析CSV文件&每次使用unset函数释放占用的内存时。
您的服务器上有多少可用RAM?如何识别它?首先,请尝试phpinfo检查内存限制是否已被覆盖。告诉我您使用的是Linux还是Windows?
ini_set('memory_limit','-1');
include_once("/var/www/html/Samples/test/recordset.php");
print_r($data);
<?php
  $fh = fopen('/proc/meminfo','r');
  $mem = 0;
  while ($line = fgets($fh)) {
    $pieces = array();
    if (preg_match('/^MemTotal:\s+(\d+)\skB$/', $line, $pieces)) {
      $mem = $pieces[1];
      break;
    }
  }
  fclose($fh);

  echo "$mem kB RAM found"; ?>