gpt4 book ai didi

javascript - 多个写入文件

转载 作者:行者123 更新时间:2023-12-02 16:35:54 27 4
gpt4 key购买 nike

我有一个 Web 应用程序,当用户单击“保存”时,应该写入文件。该应用程序是“足球调度程序”,因此多个球员可以同时单击保存按钮。

本来我以为这会是一件罕见的事情,但事实并非如此,因为当宣布比赛的选手们蜂拥而至时,因为比赛很快就会爆满。

如果两个玩家同时按下保存键会发生什么?只有一名玩家的保存会生效,而另一名玩家将会丢失(这种情况并不罕见,发生在最后一个可用位置,然后出现一些冲突)。

我该如何应对这种现象?

//删除代码,因为不需要它

<小时/>

我想知道这是否可以在不使用数据库的情况下实现。因此,不回答也被接受。

最佳答案

我想你会像数据库一样处理这个问题。向文件添加锁并等待。

类似于:

while (file_exists('file.lock')) {
usleep(10000);
}
touch('file.lock');
...
unlink('file.lock');

您可能想要添加超时。我认为这足够安全,但我认为两个用户仍然可以同时运行它。在这种情况下,您可能需要在继续之前添加一个检查,以确保其内容已成功保存。

更新: 正如 Marc B 指出的那样,文件锁定似乎包含在 php 中,直到他指出才知道这个功能 flock() .

$fp = fopen("file", "r+");

// try to acquire an exclusive lock, otherwise sleep 10ms before trying again
while (!flock($fp, LOCK_EX)) {
usleep(10000);
}

fwrite($fp, "Write something here\n");
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // release the lock

fclose($fp)

这与我上面编写的函数类似。当然,不要关注 fwrite,我只是从 php.net 复制了示例来展示 flock() 是如何工作的。

关于javascript - 多个写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27930164/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com