Задать вопрос
@constintmid
Laravel vue.js

Как узнать что транзакция проходит 3 раза?

$i=0;
        try
        {
         return  DB::transaction(function () use ($p,$i)
            {
                $i++;
                throw new \Exception();

                $patientAnalyzes->delete();
                return response()->json(['message' => 'p успешно удален'.$i], 200);
            }, 3);
        } catch (\Exception $exception)
        {
            return response()->json(['message' => 'Ошибка сервера повторите пожалуйста попытку'.$i], 500);
        }


Почему показывает $i 0 как узнать что транзакция пыталась 3 раза и только потом краш
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
JhaoDa
@JhaoDa
LaravelRUS Team
Во-первых, твой catch может сработать ДО окончания всех попыток, только если ошибка не относится к «concurrency error», как их называют в ларавел.

Во-вторых, если такое случилось, то номер попытки всё равно узнать не возможно, потому что в итоге выкидывается просто исключение без всяких параметров.

Запускай транзакцию в цикле, лови ошибки и считай попытки.
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
Передайте в функцию обратного вызова переменную по ссылке, а не по значению:
use ($p, &$i)
в противном случае инкрементите локальную переменную. Ну и кроме того DB::transaction() и так само выполнит не больше 3 попыток, зачем сюда городить этот огород?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы