PHP阵列使用了更多的内存,因此应该

时间:2018-07-17 16:32:04

标签: php arrays

我试图将16MB的文件加载到php数组中。 最终会占用约63MB的内存。

将其加载到字符串中仅消耗16MB,但是问题是,我需要将其放入数组中,然后才能更快地访问它。

文件由大约750k行组成(路由表转储)。 我探究地应该将其加载到MySQL数据库中,然后在其中发布,没有足够的内存来运行该程序,因此我选择了rqlite:https://github.com/rqlite/rqlite。因为我还需要复制功能。

我不确定SQLite数据库是否足够快。

有人对这个问题有想法吗? 您可以在此处获取实际文件:http://data.caida.org/datasets/routing/routeviews-prefix2as/2018/07/routeviews-rv2-20180715-1400.pfx2as.gz

我使用的代码:

$data = file('routeviews-rv2-20180715-1400.pfx2as');
var_dump(memory_get_usage());

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Php fread函数。它允许读取固定大小的数据。可以在循环内部使用它来读取大小较大的数据块。它不占用太多内存,适合读取大文件。

如果要对数据进行排序,则可能要使用数据库。您可以使用fread一次从大文件读取一行数据,然后将其插入数据库。