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

Data not consistence, using MySQL, PHP, Yii2

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

此项目中的主要 table 是视图 table 和 max_view table。视图 table 保留日期、时间和视图数。并且 max_view table 跟踪可以查看图像的最大数量。

每次加载图像时。我会将日期和时间存储到视图中 table。并且将从 max_view table.

中图像的总最大观看次数中减去 1

Table 示例:

查看Table

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

Max_view Table

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();

插入视图 table:

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();

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

减去 9

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

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