0

PHP新手在这里

我正在创建一个网页,该网页通过附加到文本文件中来存储一些信息。每次网页加载时,都会有一个小的 php 脚本将信息添加到文本文件的末尾。我正在使用 file_put_contents。这是我的代码的非常简化的版本:

<?php
$file = "records.txt";
$current = file_get_contents($file);
$current .= "id = ". $_GET["id"]." \n";
file_put_contents($file, $current );
?>

这是我的担忧...如果数百人打开我的网页,我的脚本是否能够捕获所有用户信息而不会错过任何人。这是极其重要的。

我害怕锁定它(使用 LOCK_EX),因为这意味着当新用户打开网页时,如果另一个用户正在写入脚本,则脚本将无法打开并附加到文本文件中,因此我不会能够捕获他的信息,这是一个大问题。

那么我应该忽略锁还是需要一个?我应该如何解决这个问题

非常感谢。

4

3 回答 3

0

Using a database will be very slow. Your problem sounds exactly like what log files do, they do it efficiently, are very well tested and are reliable. Some of them even support sets of files with a file size of your choosing. In theory you would just replace the error message with your data. Although I have not yet used it myself, I see references to log4j all over the place, so it's a good place to start. It uses Java. Java itself has a little logging system built into it that I have used with good results on a small job. You might even be able to treat log4j like a black box and use it for projects built with other languages.

于 2013-04-07T04:47:53.107 回答
0

fopen()a开关一起使用。这将处理所有问题。

$handle = fopen("somefile.txt", "a");

根据您的要求,您不应该锁定文件,但这可能会使文件暴露于漏洞中。所以我会建议一个替代方案。

代替文件,在数据库中插入您想要的信息。

于 2013-04-07T04:12:22.080 回答
0

它不是数据库,但类似于锁定。您可以使用队列来存储要写入文件的消息。它可以变得非常大。

于 2013-04-07T04:14:01.047 回答