附加到文件...我需要锁定

时间:2013-04-07 04:09:05

标签: php

Php newbie here

我正在创建一个网页,通过附加到文本文件中来存储一些信息。 每次加载网页时,都会有一个小的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)因为这意味着当新用户打开网页时,如果其他用户正在写入该脚本,脚本将无法打开并附加到文本文件我无法捕获他的信息,这是一个很大的问题。

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

非常感谢。

3 个答案:

答案 0 :(得分:0)

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

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

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

而不是文件,请在数据库上插入所需信息。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用数据库会非常慢。您的问题听起来与日志文件完全相同,它们有效地完成,经过严格测试并且可靠。其中一些甚至支持具有您选择的文件大小的文件集。理论上,您只需将错误消息替换为您的数据。虽然我自己还没有使用它,但是我看到了对log4j的引用,所以它是一个很好的起点。它使用Java。 Java本身内置了一个小的日志记录系统,我在一个小工作中使用了很好的结果。您甚至可以将log4j视为黑盒子,并将其用于使用其他语言构建的项目。