首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只从PHP文件加载一个数组(到内存)

问只从PHP文件加载一个数组(到内存)
EN

Stack Overflow用户
提问于 2017-05-18 23:02:55
回答 2查看 316关注 0票数 1

所以我有很多(数百万)的记录要处理。我试过MongoDB和Neo4j,它们都简单地让我的双核ubuntu box停了下来。

我想知道(我不相信有)是否有任何方法可以将PHP数组存储在文件中,而只将一个数组加载到内存中。举个例子:

代码语言:javascript
复制
<?php
$loaded = array('hello','world');
$ignore_me = array('please','ignore');
$ignore_me2 = array('please','ignore','again');
?>

因此,我可以有效地调用$loaded数组,但其他数组不会加载到内存中(即使它们在同一个文件中)?我知道fread/fopen,但这往往是文件是一个普通的文本块。

如果(我怀疑)答案是否定的--像NoSQL数据库这样的东西怎么不需要a)为每个记录创建一个文件,b)将所有内容加载到内存中?我知道Neo4j使用Java,但它应该能够与之匹敌!!

EN

回答 2

Stack Overflow用户

发布于 2017-05-18 23:23:07

您是否考虑过关系型数据库,如Mysql、PostgreSql、MS Sql server?

我看到您尝试过MongoDB和Neo4J,前者是一个面向对象的数据库,后者是一个面向节点的数据库。

我知道NoSQL是一个很好的趋势,但是我在我的百万条记录集合上尝试了NoSQL,它的性能太差了,所以我又换回了Relational SQL。

如果你仍然坚持使用NoSQL,试试Redis和Memcached,它们都是内存数据库。

票数 1
EN

Stack Overflow用户

发布于 2017-05-18 23:15:03

您可以使用PHP Streams对文件进行读/写。

读取文件并转换为数组

代码语言:javascript
复制
$content = file_get_contents('/tmp/file.csv'); //file.csv contains a,b,c
$csv = implode(","$content); //csv is now array('a', 'b', 'c');

写入文件

代码语言:javascript
复制
$line = array("a", "b", "c");
// create stream
$file = fopen("/tmp/file.csv","w");
// add line as csv
fputcsv($file, $line);
// close stream
fclose($file);

您还可以向csv循环和添加行,以及循环和检索行。https://secure.php.net/manual/en/function.fputcsv.php

您可以使用fgetcsv检索多个行,它也保留了要访问的下一行的指针https://secure.php.net/manual/en/function.fgetcsv.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44051384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档