Записать / сохранить все SQL-запросы, выполненные из laravel - PullRequest
0 голосов
/ 20 ноября 2018

Мы сталкиваемся с очень критической и странной проблемой, после долгого процесса пропадает немного данных.Мы обрабатываем данные о грузе, одна партия может содержать 1000 ящиков от 1000 клиентов.Каждый клиент получит свой собственный номер для отслеживания (номер AWB), мы будем добавлять 1000 отправлений вместе в номер отправления, и мы будем обновлять каждый процесс, используя номер отправления.Когда мы обновляем номер отгрузки, все соответствующие отгрузки будут обновлены.В этом процессе мы не обновляем данные грузоотправителя / грузополучателя, но после этого случайные данные грузоотправителя и грузополучателя удаляются.Мы проанализировали весь код за 1 неделю, и у нас нет понятия, где именно он удаляется.Это проблема производства, и мы находимся в очень критической стадии.Мы не смогли воспроизвести эту проблему в нашей среде.Но это случайный отчет со стороны клиента из разных ветвей.

Чтобы выяснить проблему, мы решили добавить больше журналов и хотим иметь строгий контроль за выполнением оператора SQL.Должен ли я в любом случае регистрировать / сохранять исполняемые запросы от Laravel (как для моделей DB, так и для Eloquent).Я ожидаю, что если я добавлю фрагмент кода в класс фреймворка laravel, он должен записать SQL-запрос в файл / базу данных, чтобы мы не пропустили ни одного запроса.

Мы начали анализировать журналы, но все ещебез понятия, кто-нибудь может подсказать, как разобраться в этом вопросе?

Мы используем Laravel 5.5

1 Ответ

0 голосов
/ 25 ноября 2018

Внутри app\Providers\AppServiceProvider.php напишите приведенный ниже код.Не забудьте use Illuminate\Support\Facades\DB;

Вы можете сохранить этот запрос или войти в систему по своему желанию в функции.

public function boot()
{
    DB::listen(function ($query) {
        dd($query->sql);
        // $query->bindings
        // $query->time
    });
}

См .: https://laravel.com/docs/5.5/database#listening-for-query-events

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...