@KuzmenkoArtem

При обновлении страницы странный порядок запросов Laravel?

Не уверен точно зависит это от laravel или он тут не причем, вообщем опишу проблему.
Есть путь допустим /book/edit
При заходе на него выполняется код:
$this->locked    = self::LOCKED;
        $this->locked_at = Carbon::now();
        $this->locked_by = \Auth::user()->id;
        $this->save();


При выходе выходе со страницы (unload) срабатывает ajax и выполняется этот код
$this->locked    = self::UNLOCKED;
        $this->locked_at = null;
        $this->locked_by = null;
        $this->save();


Все нормально работает. Кроме одного случая, когда нажимаешь кнопку обновить в браузере.
Порядок действий происходит наоборот, т.е. снача происходит залачивание, а потом разлочивание, и в итоге пользователь попадает на страницу редактирования и при этом книга не залочина.

Что самое интересное, спомощу сессий, я пытался отследить порядок выполнения lock/unlock
те есть когда происходит lock, пишу в сессию что он произошел, когда unlock тоже самое. Запись в сесси показывает что порядок правильный но в бд совсем другая информация.

Также пробовал перед lock просто ставить на паузу выполнения скрипта но не помогает

Помогут любые идеи

UPD: Код js для unclock
$(window).bind('unload', function () {
            $.ajax({
                url: `book/${that.bookId}/unlock`,
                type: 'POST',
                async : false,
                data: {_token: that.token}
            });
        });
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 1
DJZT
@DJZT
Laravel - code for you
Это от браузера зависит, как он выполняет обработку события покидания и обновления страницы. Как ваш js код выглядит?

P.S. Советую для решения этой задачи использовать socket соединение. Это будет надёжнее. Да и в будущем поддержка облегчится.
Ответ написан
Ваш ответ на вопрос

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

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