【问题标题】:PHP making blank file when I try to increment my variable?当我尝试增加我的变量时,PHP制作空白文件?
【发布时间】:2014-02-19 20:31:42
【问题描述】:

我最近制作了一个 PHP 程序来计算使用我创建的程序在线的用户数量。它的工作原理是这样的:

  1. 客户端向服务器发送注册请求(registerMember.php)
  2. 服务器检查用户是否已经在线
  3. 如果用户尚未在线,请在文件中增加一个数字
  4. 将个人用户名写入文本文件

我的问题是很多人会同时注册,这会创建一个空白文件。

    $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


【解决方案1】:

在打开文件后尝试使用flock 阻止文件(参见里面的示例)。

【讨论】:

    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2018-07-25
    • 2011-04-25
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多