我需要用一个简单的键保存一个20k到30k的文件寄存器:每行值。我需要把它保存在一个文件中,因为其他实例也会使用它。然后我需要找到一个特定的键来获得它的值,并在文件中写入一个键:value。我想知道以下哪种方法更快/更好,或者被认为是好的做法。
为了写入文件,我知道三种方法:第一个:
$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");
此外,为了读取文件并找到一行,a可以执行以下操作:使用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);
我想您已经考虑过使用数据库了?因为否则你就是在重新发明轮子。数据库具有快速查找和行级锁定的所有优点。
如果你正在使用一个文件,你必须自己构建它。
我强烈建议切换到某种数据库。
顺便说一句,你没有提到你是在替换值还是只是附加到文件中。