[英]Data not consistence, using MySQL, PHP, Yii2
我正在建立一个跟踪图像视图记录的系统。
该项目中的主要表是视图表和max_view表。 视图表保留视图的日期,时间和数量。 max_view表记录了可以查看图像的最大数量。
每次加载图像时。 我将日期和时间存储到视图表中。 并且将从max_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
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();
插入视图表:
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();
我的问题是,当同时有大量用户查看时。 数据不一致。 插入视图表中的数据有时会更多。 例如,如果有10个人观看了同一张图片。 视图表应该具有10条记录,max_view表将从该图像的最大视图总数中减去10。 但是不知何故,有时max_view只能减负9。
如果我在本地计算机上对其进行测试,则它可以完美运行。 我可以知道如何解决这个问题吗? 我怀疑服务器的速度不足以捕获max_view数据。 我如何使其更加一致?
如果您尝试同时从其他主机编辑SQL数据库中的数据,则通常无法正常工作。 取而代之的是,在表中仅添加“ 1”和映像ID的New条目,并在每次达到1000之前对条目进行计数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.