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

时间:2016-04-11 14:55:09

标签: php

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

1 个答案:

答案 0 :(得分:1)

我猜你已经考虑过使用数据库了吗?因为否则你正在重新发明轮子。数据库具有快速搜索和行级锁定的所有优点。

如果您使用的是文件,则必须自行构建。

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

顺便说一下,如果您要替换值或只是附加到文件,请不要提及。