我有一个我正在编写脚本的游戏的高分文件。不幸的是,当我使用file()将文件转换为数组时需要大量内存。是否可以将文件大小限制为100行?
答案 0 :(得分:2)
当然,如果你想在磁盘上只保留100行,只写100行。假设您在编写之前有一个数组,可以使用array_slice($array, 0, 100)
。
如果在编写之前没有数组,并且每次只添加几行,则可以在读取文件之后通过在开头切片来保持行数减少。
对于这两个建议,我假设数组已排序,因此“top”100依次位于数组的开头。
答案 1 :(得分:2)
我同意上述答案,我还不能评论....
如果要偏移切片,可以使用[array_slice($array, offset, 100)
]。因此,根据array_slice手册页,如果$数组是(a,b,c,d),那么$array_slice($array, 2, 2);
将返回c, d
。
您还可以更改或添加代码到您的应用程序并使其成为用户只能看到他们的分数,从而增加文件数量但减少整体文件大小。不过,你应该只是将高分分为前10名,前20名或前100名。我认为除了获得分数的人以外,其他任何人都不在乎排在第97位。
您也可以使用filesize()
功能。设置条件,以便在文件超过最大大小时对其进行切片,创建新文件并删除原始文件。