【发布时间】:2013-02-23 02:58:43
【问题描述】:
我最近遇到了这个问题,我必须决定是将数组列表全部保存在一个文件中还是将其保存在单独的文件中。
这是交易。我有一个数组数组,我将简化示例:
countries['america'] = array('chile', 'brazil', 'usa');
countries['europe'] = array('france', 'italy', 'spain');
...and so.
所以,我可以将所有数组保存在一个大文件中(将其命名为“世界”),每当我需要查询某个大陆的国家/地区时,我都会将所有文件加载到内存中。
或者,我可以将每个数组保存在不同的文件中(将其命名为“美国”、“欧洲”等),每当我需要查询某个大陆的国家/地区时,我都会加载相应的文件。
我知道这一切都取决于大小,所以想象一下世界有 10 个大陆,每个大陆有 2000 个国家/地区。
最好的方法是什么?
注意:这是一个性能问题,我更愿意避免调用数据库。
【问题讨论】:
-
你可以 serialize 数组,但你最好使用数据库
-
这是一个性能问题,所以我尽量避免调用数据库。
-
@cgajardo 根据每个请求从磁盘读取多达 20000 个国家/地区的详细信息将是一个性能问题。
-
@Sammitch 我相信 php 可以将循环数据保存在内存中。
-
@cgajardo PHP 不会在未存储在 $_SESSION 中的请求之间将任何内容保存在内存中,并且 $_SESSION 仍会写入磁盘。 PHP 也不在同时请求之间共享任何数据。因此,如果您有 1000 个用户都发出需要将文件读入内存的请求,那么该文件将被读取 1000 次。数据库会将最近的查询结果缓存在内存中并更快地为它们提供服务。
标签: php arrays performance file memory