我需要使用一个简单的密钥保存一个20k到30k的文件寄存器:每行的值。 我需要将它保存在文件中,因为其他实例也会使用它。 然后我需要找到一个特定的键来获取它的值,并且还要写一个键:文件中的值。 我想知道以下方法是更快/更好还是被认为是一种好的做法。
为了写入文件,我知道有三种方法可以做到: 第一:
$fh = fopen('myfile.txt', 'a') or die("can't open file");
fwrite($fh, 'key:value');
fclose($fh);
秒或使用file_put_contents
file_put_contents('myfile.txt','key:value',FILE_APPEND);
和第三次使用系统调用。
exec("echo key:value >> myfile.txt");
而且,为了读取文件并找到一行可以做到: 使用file_get_contents
$filename = 'info.txt';
$contents = file_get_contents($filename);
foreach($contents as $line) {
$pos = strpos($line, $key);
}
使用档案
$filename = 'info.txt';
$contents = file($filename);
foreach($contents as $line) {
$pos = strpos($line, $key);
}
通过系统调用:
exec("grep $key | wc -l",$result);
答案 0 :(得分:1)
我猜你已经考虑过使用数据库了吗?因为否则你正在重新发明轮子。数据库具有快速搜索和行级锁定的所有优点。
如果您使用的是文件,则必须自行构建。
我强烈建议切换到某种数据库。
顺便说一下,如果您要替换值或只是附加到文件,请不要提及。