所以我试图在一个文件中缓存一个数组并在其他地方使用它。
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.php中将其设置为-1
答案 0 :(得分:0)
有两种方法可以解决这个问题:
memory_limit
只能使用服务器上可用的内存。而且似乎你的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"; ?>
unset
函数释放占用的内存。