Добрый день, сделала что-то похожее на многоуровневую реф. систему.
Но это код ужасно грузит сервер, так как стоит cron на него, мне интересно есть ли возможность его как-то упростить или улучшить?
$mupdatelvl = 1;
$referalQuality = 0;
$referalQualityFree = 0;
$referalQualityFour = 0;
while( $mupdatelvl <= 3 ){
$query_matrix = mysqli_query($link, "SELECT * FROM `users` WHERE `user_referer` = ".$uID." AND `user_place`=".$mupdatelvl) or die("61 - Ошибка: " . mysqli_error($link));
$qualityRefrer = mysqli_fetch_array($query_matrix);
if( mysqli_num_rows($query_matrix) > 0 ){
$referalQuality++;
}
$mupdatelvl++;
}
if( $referalQuality == 3 ){
$mupdatelvl = 1;
while( $mupdatelvl <= 3 ){
$query_matrix = mysqli_query($link, "SELECT * FROM `users` WHERE `user_referer` = ".$uID." AND `user_place`=".$mupdatelvl) or die("61 - Ошибка: " . mysqli_error($link));
$qualityRefrer = mysqli_fetch_array($query_matrix);
$mupdatelvlfree = 1;
while( $mupdatelvlfree <= 3 ){
$free_matrix = mysqli_query($link,"SELECT * FROM `users` WHERE `user_referer` = '".$qualityRefrer['user_id']."' AND `user_place`=".$mupdatelvlfree) or die("65 - Ошибка: " . mysqli_error($link));
$freeRefrer = mysqli_fetch_array($free_matrix);
if( mysqli_num_rows($free_matrix) > 0 ){
$referalQualityFree++;
}
$mupdatelvlfree++;
}
$mupdatelvl++;
}
}
if( $referalQualityFree == 9 ){
$mupdatelvl = 1;
while( $mupdatelvl <= 3 ){
$query_matrix = mysqli_query($link, "SELECT * FROM `users` WHERE `user_referer` = ".$uID." AND `user_place`=".$mupdatelvl) or die("61 - Ошибка: " . mysqli_error($link));
$qualityRefrer = mysqli_fetch_array($query_matrix);
$mupdatelvlfree = 1;
while( $mupdatelvlfree <= 3 ){
$free_matrix = mysqli_query($link,"SELECT * FROM `users` WHERE `user_referer` = '".$qualityRefrer['user_id']."' AND `user_place`=".$mupdatelvlfree) or die("65 - Ошибка: " . mysqli_error($link));
$freeRefrer = mysqli_fetch_array($free_matrix);
$mupdatelvlfour = 1;
while( $mupdatelvlfour <= 3 ){
$four_matrix = mysqli_query($link,"SELECT * FROM `users` WHERE `user_referer` = '".$freeRefrer['user_id']."' AND `user_place`=".$mupdatelvlfour) or die("74 - Ошибка: " . mysqli_error($link));
$fourRefrer = mysqli_fetch_array($four_matrix);
if( mysqli_num_rows($four_matrix) > 0 ){
$referalQualityFour++;
}else{
break;
}
$mupdatelvlfour++;
}
$mupdatelvlfree++;
}
$mupdatelvl++;
}
}
$uID - берется напрямую из таблицы пользователей, следовательно просчитывает всех пользователей с определённым статусом, таких около 250-ти человек
Коротко о этом ужасе - когда у пользователя набирается 3 человека он поднимает уровень рефералки, то есть получает больший процент
Потом проверяются как раз таки эти три первых человека и у каждого так же должно быть по 3 человека, тогда начальный пользователь получает следующий уровень.
И потом получается проверяется 9 человек и у каждого должно быть по три - начальный пользователь получает последний уровень рефералки.
Так вот... Сложно я объясняю, но вот так получилось только :)
Заранее спасибо, даже за то что попытаетесь понять этот текст