Форум программистов, компьютерный форум, киберфорум
PHP: Laravel
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 17.11.2013
Сообщений: 7
1

Оптимизация контроллера, медленно работает

08.01.2021, 14:34. Просмотров 236. Ответов 2
Метки нет (Все метки)

Помогите пожалуйста, очень медленно работает при нагрузке в 70 человек с обновлением раз в 5 сек обрабатывается секунд 10-15

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
    
public function show(Request $request, $id)
    {
        $user = \Auth::user();
 
        $tournament = \Cache::remember('Tournament@show_' . $id, 5, function () use ($id) {
            return Tournament::select($this->select)->find($id);
        });
        $round = $request->get('round') ? $request->get('round') : $tournament->round;
 
 
        $grids = TGrids::select('*')
            ->where('tournament_id', $tournament->id)
            ->with(['matches' => function ($query) {
                $query->select(['grid_id', 'tournament_id', 'status', 'win', 'code']);
            }]);
 
        $TPlayersSelect = [
            'tournaments_players.user_id', 'tournaments_players.role', 'round',
            'team', 'nickname', 'avatar', 'exp', 'users.role AS site_role', 'grid_id'
        ];
 
        if (\Perm::allows('tournament@info-role'))
            if (\Perm::role(['moder', 'admin', 'dev']))
                $TPlayersSelect = array_merge($TPlayersSelect, ['note']);
 
        $players = TPlayers::select($TPlayersSelect)
            ->where('tournaments_players.tournament_id',    $id)
            ->join('users',                     'users.id',                     '=', 'tournaments_players.user_id')
            ->join('games_accounts',    'games_accounts.id',    '=', 'tournaments_players.account_id')
            ->with([
                'profile' => function ($query) use ($tournament) {
                    $profileSelects = ['user_id', 'game', 'mmr'];
 
                    if (\Perm::allows('tournament@info-role'))
                        if (\Perm::role(['moder', 'admin', 'dev']))
                            $profileSelects = array_merge($profileSelects, ['priority', 'roles']);
 
                    $query->select($profileSelects);
                    $query->where('game', $tournament->game);
                },
                'statistics' => function ($query) use ($tournament) {
                    $query->select('user_id', 'win', 'lose');
                    $query->where(DB::raw('DATE_FORMAT(created_at , \'%Y-%m\')'), date('Y-m'));
                    $query->where('game', $tournament->game);
                    $query->where('type',   $tournament->type);
                }
            ]);
 
        if ($request->get('round') != 'all') {
            $grids->where('round', $round);
            $players->where('tournaments_players.round', $round);
        }
 
        $name = '_t' . $tournament->id . '_r' . $round . '_u-r' . $user->role;
        $players = \Cache::remember('TPlayers' . $name, 5, function () use ($players) {
            return $players->get();
        });
 
        if ($tournament->grid_disable) {
            $grids = [];
            $players = $players->map(function ($player, $key) {
                $player->team = null;
                $player->role = null;
                return $player;
            });
        } else {
            $grids = \Cache::remember('TGrids' . $name, 5, function () use ($grids) {
                return $grids->get();
            });
 
            if (\Perm::allows('tournament@edit', $tournament)) {
                $grids->each(function ($grid, $k) {
                    $grid->matches->makeVisible(['code']);
                });
            } else {
                $player = $players->where('user_id', $user->id)
                    ->where('round', $tournament->round)->first();
                if ($player && $player->grid_id) {
                    $grid = $grids->where('id', $player->grid_id)->first();
                    if ($grid) $grid->matches->makeVisible(['code']);
                }
            }
        }
 
        $tournament->players = $players;
        $tournament->grids = $grids;
 
        return $tournament;
    }
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
class TGrids extends Model
{
    protected $table = 'tournaments_grids';
    
    public $timestamps = false;
 
    protected $fillable = [
        'tournament_id',
        'round', 'grid', 'bo',
        'win', 'team1', 'team2',
        'team1_score', 'team2_score'
    ];
}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class TMatches extends Model
{
    protected $table = 'tournaments_matches';
 
    protected $fillable = [
        'tournament_id', 'grid_id',
        'status', 'win', 
        'code', 'match'
    ];
 
    protected $hidden = ['code'];
}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Tournament extends Model
{
    protected $fillable = [
        'user_id', 'provider_id',
        'name', 'img', 'desc', 'prize',
        'twitch', 'discord',
        'game', 'type', 'round',
        'lvl', 'max_players',
        'leave_disable', 'grid_disable',
        'start', 'status'
    ];
 
    protected $casts = [
        'leave_disable' => 'boolean',
        'grid_disable'  => 'boolean'
    ];
}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class GameProfile extends Model
{
    protected $table = 'games_profiles';
 
    protected $fillable = [
        'user_id', 'game',
        'mmr', 'priority', 'roles'
    ];
 
    protected $casts = [
        'roles' => 'array',
        'mmr'       => Rang::class
    ];
}
PHP
1
2
3
4
5
6
7
8
9
10
class GameAccount extends Model
{
  protected $table = 'games_accounts';
 
  protected $fillable = [
        'user_id', 
        'game','nickname', 
        'profileId', 'accountId', 'active'
    ];
}
PHP
1
2
3
4
5
6
7
8
9
10
11
class TStatistics extends Model
{
    protected $table = 'tournaments_statistics';
 
    protected $fillable = [
        'user_id', 'points',
        'game', 'type',
        'win', 'lose',
        'k', 'd', 'a'
    ];
}

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Rang implements CastsAttributes
{
    /**
     * Cast the given value.
     *
     * @param  \Illuminate\Database\Eloquent\Model  $model
     * @param  string  $key
     * @param  mixed  $value
     * @param  array  $attributes
     * @return mixed
     */
    public function get($model, $key, $value, $attributes)
    {
        $league = null;
        $division = null;
 
        foreach (config('games.lol.leagues') as $league_key => $divisions) {
            $divisions_key = array_reverse(array_keys($divisions));
            foreach ($divisions_key as $division_key) {
                $elo = $divisions[$division_key];
 
                if ($value >= $elo) {
                    $league     = $league_key;
                    $division = count($divisions_key) > 1 ? $division_key : null;
                } else return [
                    'league'        => $league,
                    'division'  => $division
                ];
            }           
        }
        return [
            'league'        => $league,
            'division'  => $division
        ];
    }
}
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
return [    
 
    'lol' => [  
 
        'leagues'               => [
            'iron'              => [1 => 400,   2 => 300,   3 => 200,   4 => 100],
            'bronze'            => [1 => 800,   2 => 700,   3 => 600,   4 => 500],
            'silver'            => [1 => 1200,  2 => 1100,  3 => 1000,  4 => 900],
            'gold'          => [1 => 1600,  2 => 1500,  3 => 1400,  4 => 1300],
            'platinum'              => [1 => 2000,  2 => 1900,  3 => 1800,  4 => 1700],
            'diamond'           => [1 => 2400,  2 => 2300,  3 => 2200,  4 => 2100],
            'master'            => [1 => 2500],
            'grandmaster'           => [1 => 2600],
            'challenger'            => [1 => 2700]
        ]
    ]
 
];
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2021, 14:34
Ответы с готовыми решениями:

Авторизация со второго контроллера AD – проходит медленно
Добрый день! Прошу помочь разобраться, в системе два контроллера AD, Основной DC1 + его клон DC2 ....

Медленно работает компьютер, медленно открываются страницы в интернете, тормозит Юутуб
Всем привет! Нужна ваша помощь... Когда производится первый запуск компьютера и я захожу через...

Оптимизация метода контроллера
Доброго времени суток дорогие форумчане. Быть может мой вопрос кому то покажется глупым или не по...

Интернет работает очень медленно на одном ПК, на другом работает быстрее.
Такая проблема, интернет очень плохо работает,скорость совсем маленькая (14м) подключаю другой комп...

2
1704 / 1034 / 382
Регистрация: 13.06.2013
Сообщений: 3,508
08.01.2021, 16:05 2
1) Повесить индексы на таблицы.
2) Настроить логи с таймингами, найти места/запросы которые тормозят.
3) Настроить мониторинги, смотреть нагрузку CPU, RAM итп.
4) Если таблички большие (500к+ строк), то можно настроить партиционирование.

По логике сложно сказать, вы же никакого описания даже не дали.
1
0 / 0 / 0
Регистрация: 17.11.2013
Сообщений: 7
08.01.2021, 16:11  [ТС] 3
не могли бы вы мне подсказать по 2 пункту как лучше это сделать для REST Api

по поводу описания, могу дать ссылку на проект
https://ff15.ru/
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2021, 16:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии "оптимизатора" в какой то умной книжке был...

ПК медленно работает
Очень медленно работает ПК. Не только в интернете, но и свои папки еле открывает. Логи во вложении

Медленно работает PC
помогите пофиксить(удалить ненужное) думаю вирусы тоже есть лагает комп эта тема и другая моя...

Медленно работает ПК
При загрузке половины памяти 16 из 32 ГБ компьютер начинает заметно медленнее работать и...

Медленно работает 1С
Наш сервер 1С находиться в Турецком заводе, но он свзяан с нашим Российским заводом, и те и те...

Urllib работает медленно
Здравствуйте. Все запросы через urllib выполняются достаточно долго( порядка 20-22 секунд). Даже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.