使用系统调用在php中写入和读取文件是否好


Is it good to use system calls to write and read a file in php ?

我需要用一个简单的键保存一个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);

我想您已经考虑过使用数据库了?因为否则你就是在重新发明轮子。数据库具有快速查找和行级锁定的所有优点。

如果你正在使用一个文件,你必须自己构建它。

我强烈建议切换到某种数据库。

顺便说一句,你没有提到你是在替换值还是只是附加到文件中。