@timmy88

Почему параллельные запросы на Laravel периодически не работают?

К примеру есть функция в контроллере

public function test(Request $request){

        for($i = 0; $i < 1; $i++){
            $data = Good::query()->where('guid', '=', 'ff8717ff-4550-454d-b9c5-b965d6830069')->get();
            if($data->count() == 0){
                return response('empty', <b>401</b>);
            }
        }
        return ['result'=>'ok'];

    }


И вся проблема в том что если запускать допустим через Postman два параллельных теста по 500 итераций периодически возвращается 401, то есть пустой массив, хотя по этому запросу ровно 1 запись в таблице

Я так понимаю что то с PDO в методе fetchAll() - он извлекает пустой массив. Как это вообще возможно?
Пробовал на MySQL, Postgre 14 результат одинаковый
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
@timmy88 Автор вопроса
Проблема решена

Допустим у меня есть база base, а потом я создаю базу base2 для неких тестов (неважно)
Так вот, в файле .env была прописана base2, в конфиге Laravel config.database - base

Учитывая частный запрос
SELECT * FROM goods WHERE guid = 'f63c3b1d-36b6-40f2-a637-b42a6684042e'

такого идентификатора в базе base не было и поэтому приходило 401 мне.

ИТОГ: при некой нагрузке Laravel в основном берет настройки из файла .env, а иногда по каким то причинам из папки config/database, соотношение примерно 300 - env, 10 - config

Кто знает почему так?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы