3zz*_*zzy 5 php performance file
我有几个巨大的(11mb和54mb)文件需要阅读以处理脚本的其余部分.目前我正在读取文件并将它们存储在一个数组中,如下所示:
$pricelist = array();
$fp = fopen($DIR.'datafeeds/pricelist.csv','r');
while (($line = fgetcsv($fp, 0, ",")) !== FALSE) {
if ($line) {
$pricelist[$line[2]] = $line;
}
}
fclose($fp);
Run Code Online (Sandbox Code Playgroud)
..但我经常从我的webhost获取内存过载消息.我如何更有效地阅读它?
我不需要存储所有内容,我已经拥有与数组键完全匹配的关键字$line[2],我只需要读取一个数组/行.
如果您知道密钥,为什么不通过密钥过滤掉?您可以使用memory_get_usage()函数检查内存使用情况,以查看填充$ pricelist数组后分配的内存量.
echo memory_get_usage() . "\n";
$yourKey = 'some_key';
$pricelist = array();
$fp = fopen($DIR.'datafeeds/pricelist.csv','r');
while (($line = fgetcsv($fp, 0, ",")) !== FALSE) {
if (isset($line[2]) && $line[2] == $yourKey) {
$pricelist[$line[2]] = $line;
break;
/* If there is a possiblity to have multiple lines
we can store each line in a separate array element
$pricelist[$line[2]][] = $line;
*/
}
}
fclose($fp);
echo memory_get_usage() . "\n";
Run Code Online (Sandbox Code Playgroud)