Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据不一致,使用MySQL、PHP、Yii2_Php_Mysql_Yii - Fatal编程技术网

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

数据不一致,使用MySQL、PHP、Yii2,php,mysql,yii,Php,Mysql,Yii,我正在建立一个跟踪图像视图记录的系统 此项目中的主要表是视图表和max_视图表。视图表保存视图的日期、时间和数量。max_view表记录了图像可以查看的最大数量 每次加载图像时。我将把日期和时间存储到视图表中。并将从max_view表中图像的总最大视图中减去1 表示例: 视图表 最大视图表 下面是我在yii2框架中的SQL查询: 随机选择一幅图像: $row = Yii::$app->db->createCommand("SELECT id FROM image_source ORD

我正在建立一个跟踪图像视图记录的系统

此项目中的主要表是视图表和max_视图表。视图表保存视图的日期、时间和数量。max_view表记录了图像可以查看的最大数量

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

表示例:

视图表 最大视图表 下面是我在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 table将从该图像的max view总数中减去10。但不知怎的,从max_的观点来看,它有时只有-9


如果我在我的本地机器上测试它,它会完美地工作。我能知道怎么解决这个问题吗?我怀疑服务器的速度不够快,无法捕获max_view数据。如何使其更加一致?

如果试图同时编辑来自不同主机的SQL数据库中的数据,这通常无法正常工作。
与此相反,只需将一个新条目添加到一个只显示“1”和图像ID的表中,然后每次都对条目进行计数,直到它们达到1000。

是否有理由必须从max_view表中减去max_view值,因为我要做的只是计算特定图像的视图表中的行数,并将其与该图像允许的最大条目进行比较(该条目可能会与每个图像一起移动到您的图像\u源表中,这样您就不再需要max\u视图表了)原因是将来我会用学分来代替它。用户可以购买信用卡,并可能投入4.5美元。。。。所以我需要记录学分。现在是一个测试阶段。
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();