gpt4 book ai didi

php - 从传销大数据中选择数据

转载 作者:行者123 更新时间:2023-11-29 18:03:59 24 4
gpt4 key购买 nike

我想我需要一些建议来解决我的案子。我有一个使用 PHP 和 MySQL 的传销应用程序。问题出在成员模式中。案例如下:

  1. 每个家长最多可以有 10 个 child ,每个 child 也最多可以有 10 个 child 。
  2. 在我的申请中,每个尝试注册的人都需要推荐人,这意味着需要家长。
  3. 传销系统只支持10级,这意味着一个人可能有10.000.000.000个下线。
  4. 这是主要情况。如果有一位家长有 10 个 child ,并且有人尝试通过该家长推荐进行注册(这意味着该家长将有 11 个 child ),那么该人将成为这 10 个 child 之一的孙辈。

插图:

A(父级)

A1、A2、A3、A4、A5、A6、A7、A8、A9、A10。 ( child )

然后,有人想注册成为A的 child (A11),那么系统必须检测A是否有10个 child (最多),并且A11将成为A1的 child (如果A1还没有10个 child )。但如果 A1 已经有 10 个 child ,那么 A11 将成为 A2 的 child ,依此类推。

主要问题是,如果我从数据库中选择数据,例如:

<?php
$sql = mysql_query("SELECT * FROM table WHERE refferal='A'");
if(mysql_num_rows($sql) >= 10) {
/* Another Select with Loop */
}
?>

如果应用程序已经有大数据,这将会减慢应用程序的速度。那我该怎么办呢?我只想检查 parent 是否已经有 10 个 child ,新成员将是孙子,但如果每个 child 已经有 10 个 child ,新成员将是孙子。有人可以帮助我吗?

最佳答案

您无法在不查询数据库的情况下评估免费“点”,但您可以通过选择具有特定层次结构级别的免费“点”的所有用户来减少查询数量,而不是单独查询每个父级:

$parents = NULL;
do {
if ($parents === NULL) {
$parentsQuery = 'SELECT t.user_id FROM table_name as t WHERE t.parent_id IN [' . implode(',', $parents) . '];';
$parentResult = msqli_query($dbConnection, $parentQuery);
$parents = $parentResult->fetch_all();
$parents = array_map(function($parentRow){
return $parentRow['user_id'];
}, $parents);
} else {
$parents = [$_POST['parent']];
}
$query = 'SELECT parent.user_id FROM table_name as parent JOIN table_name as child ON child.parent_id = parent.user_id WHERE parent.user_id IN [' . implode(',', $parents) . '] AND count(child.*) < 10 GROUP_BY parent.user_id ORDER BY parent.user_id;';
$result = msqli_query($dbConnection, $query);
while ($result->num_rows === 0 && !empty($parents));

// First parent that has less than 10 children
$parent= mysqli_fetch_assoc($result)['user_id'];

代码可能会减少运行时间,但循环越深,速度仍然会变慢。由于最大嵌套级别,此代码将在数据库上运行最多 20 个查询。 (10 个子查询,在更深层次上负载非常密集,还有 10 个快速但 RAM 密集型父查询)

该代码还没有经过测试,只是为了引导您找到更快的解决方案。安全性和稳定性也需要改进。

关于php - 从传销大数据中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48077203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com