所以我试图在文件中缓存一个数组,并在其他地方使用它。
import.php
// Above code is to get each line in CSV and put in it in an array
// (1 line is 1 multidimensional array) - $csv
$export = var_export($csv, true);
$content = "<?php '$data=" . $export . ";?>";
$target_path1 = "/var/www/html/Samples/test";
file_put_contents($target_path1 . "recordset.php", $content);
somewhere.php
ini_set('memory_limit','-1');
include_once("/var/www/html/Samples/test/recordset.php");
print_r($data);
现在,我已经在somewhere.php中包含了recordset.php,以使用存储在其中的数组。当上传的CSV文件有5000行时,它可以很好地工作,例如,如果我试图上传有50000行的CSV,我会收到一个致命错误:
致命错误:允许的内存大小67108864字节已用完(试图分配79691776字节)
我该如何修复它,或者有没有可能以更方便的方式实现我想要的东西?说到表演。。。我应该考虑服务器的CPU吗?我已经覆盖了内存限制,并在somewhere中将其设置为-1。php
有两种方法可以解决此问题:
- 您需要增加服务器上的内存(RAM),因为
memory_limit
只能使用服务器上可用的内存。而且您的PHP可用RAM似乎非常低
检查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"; ?>
来源:使用php 获取服务器ram
- 你应该解析你的CSV文件块&每次使用CCD_ 2函数释放占用的内存