数据不一致,使用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。
我正在构建一个跟踪图像浏览记录的系统。
此项目中的主要 table 是视图 table 和 max_view table。视图 table 保留日期、时间和视图数。并且 max_view table 跟踪可以查看图像的最大数量。
每次加载图像时。我会将日期和时间存储到视图中 table。并且将从 max_view table.
中图像的总最大观看次数中减去 1Table 示例:
查看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。