当我尝试增加变量时,PHP会生成空白文件吗?

当我尝试增加变量时,PHP会生成空白文件吗?,php,file,increment,race-condition,Php,File,Increment,Race Condition,我最近制作了一个PHP程序,用我创建的程序计算有多少用户在线。它的工作原理如下: 客户端向服务器发送注册请求(registerMember.php) 服务器检查用户是否已联机 如果用户尚未联机,请在文件中增加一个数字 将人员用户名写入文本文件 我的问题是很多人会同时注册,这会创建一个空白文件 $file_handle = fopen("registeredMembers", "r"); while (!feof($file_handle)) { $line = f

我最近制作了一个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);
        }
    

    这是因为有两个请求同时发生,并且在程序写入递增版本的变量之前,另一个请求在写入之前读取了一个空白文件。我有没有更好的办法?任何帮助都将不胜感激

    打开文件后,尝试用阻止该文件(请参见内部示例)。

    您好,欢迎访问该网站!很好地表达了你的第一个问题。