我正在尝试使用PHP打开/读取6MB CSV文件:
$lines = file("/path/to/my/file.csv");
但我收到以下错误:
PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 6461150 bytes) in /path/to/php_file.php on line 488
如您所见,我们的PHP内存设置设置为1GB(专用服务器,不受任何共享主机包等限制)。
我的问题是,当读入变量(数组)时, 6MB CSV文件 确实使用超过1GB 。我只是有点困惑,因为我确定我已经用PHP打开了更大的CSV文件,之前没有问题。
不应该有所作为,但我们在 Ubuntu 12.04服务器上使用 PHP 5.3 。
答案 0 :(得分:1)
您应该逐行处理csv以防止内存耗尽。尝试这样的事情:
$f = fopen("my.csv", "r");
if(true === is_resource($f))
{
while(false === feof($f))
{
$line = fgetcsv($f, 8192);
// do something with the data here
}
fclose($f);
}
使用fgetcsv()解析csv也比使用file()容易得多。
答案 1 :(得分:-1)
尝试重新启动apache服务器。