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)因为这意味着当新用户打开网页时,如果其他用户正在写入该脚本,脚本将无法打开并附加到文本文件我无法捕获他的信息,这是一个很大的问题。
我应该忽略锁定还是需要锁定?我应该如何解决这个问题
非常感谢。
答案 0 :(得分:0)
将fopen()
与a
切换一起使用。这将处理所有问题。
$handle = fopen("somefile.txt", "a");
根据您的要求,您不应该锁定文件,但这可能会将文件暴露给漏洞。所以我会建议替代方案。
而不是文件,请在数据库上插入所需信息。
答案 1 :(得分:0)
它不是数据库,但它类似于锁定。您可以使用队列来存储要写入文件的消息。但它可能变得非常大。
答案 2 :(得分:0)
使用数据库会非常慢。您的问题听起来与日志文件完全相同,它们有效地完成,经过严格测试并且可靠。其中一些甚至支持具有您选择的文件大小的文件集。理论上,您只需将错误消息替换为您的数据。虽然我自己还没有使用它,但是我看到了对log4j的引用,所以它是一个很好的起点。它使用Java。 Java本身内置了一个小的日志记录系统,我在一个小工作中使用了很好的结果。您甚至可以将log4j视为黑盒子,并将其用于使用其他语言构建的项目。