【发布时间】:2014-02-19 20:31:42
【问题描述】:
我最近制作了一个 PHP 程序来计算使用我创建的程序在线的用户数量。它的工作原理是这样的:
- 客户端向服务器发送注册请求(registerMember.php)
- 服务器检查用户是否已经在线
- 如果用户尚未在线,请在文件中增加一个数字
- 将个人用户名写入文本文件
我的问题是很多人会同时注册,这会创建一个空白文件。
$file_handle = fopen("registeredMembers", "r");
while (!feof($file_handle)) {
$line = fgets($file_handle);
$line++;
$fp = fopen('registeredMembers', 'w');
fwrite($fp, $line);
fclose($fp);
}
这是因为有两个请求同时发生,并且在程序写入变量的递增版本之前,另一个请求在写入之前已经读取了一个空白文件。有没有更好的方法可以做到这一点?任何帮助将不胜感激!
【问题讨论】:
-
您好,欢迎来到本站!很好地表达了您的第一个问题。
标签: php file increment race-condition