gpt4 book ai didi

php - 数据不一致,使用MySQL、PHP、Yii2

转载 作者:行者123 更新时间:2023-11-28 23:58:45 25 4
gpt4 key购买 nike

我正在构建一个跟踪图像浏览记录的系统。

这个项目中的主要表是view表和max_view表。 View 表保留日期、时间和 View 数。 max_view 表记录了可以查看图像的最大数量。

每次加载图像时。我会将日期和时间存储到 View 表中。并且将从 max_view 表中图像的总最大 View 中减去 1。

表格示例:

查看表格

id  | image_id |  datetime             |  username
1 1 2015-03-02 02:30:34 user1
2 1 2015-03-02 02:32:34 user2
3 2 2015-03-03 01:40:34 user1

最大 View 表

id   |   max_view   | image_loc
1 1000 /image/image_1.jpg
2 500 /image/image_2.jpg

我在 yii2 框架下的 SQL 查询如下:

随机选择一张图片:

$row = Yii::$app->db->createCommand("SELECT id FROM image_source ORDER BY RAND()")->queryOne();

插入 View 表:

Yii::$app->db->createCommand()->insert('view', [
'image_id' => $row['image_id'],
'datetime' => $datetime,
'username' => $user,
])->execute();

更新最大观看次数:

Yii::$app->db->createCommand("UPDATE max_view SET max_view=max_view-1 WHERE id=$image_id")->execute();

我的问题是,当有大量用户同时查看时。数据不一致。 View 表中插入的数据有时会比较多。例如,如果有 10 个人查看了同一张图片。 View 表应该有 10 条记录,而 max_view 表将从该图像的最大 View 总数中减去 10。但不知何故,它有时只会从 max_view 减去 9。

如果我在本地机器上测试它,它可以完美运行。我可以知道我该如何解决这个问题吗?我怀疑服务器的速度不够快,无法捕获 max_view 数据。如何使它更一致?

最佳答案

如果您尝试同时从不同主机编辑 SQL 数据库中的数据,那通常无法正常工作。而不是只在表中添加一个新条目,该表只显示“1”和图像 ID,并且每次都对条目进行计数,直到达到 1000。

关于php - 数据不一致,使用MySQL、PHP、Yii2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30703515/

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