繁体   English   中英

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

[英]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

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

插入视图表:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM