Поддержание сессии с помощью ajax в php - PullRequest
0 голосов
/ 03 марта 2019

У меня есть PHP-приложение, в котором я хочу поддерживать сеанс независимо от настроек сервера.Я сделал AJAX-вызов следующим образом, чтобы сделать вызов серверу через AJAX в интервале ...

 <script type="text/javascript">
            jQuery(document).ready(function(){
                var refresh_session = function(){
                    var refresh_interval = 180000;
                    setTimeout(function(){
                        jQuery.ajax({
                            url: 'refresh-session.php',
                            cache: false,
                            success: function(){
                                refresh_session();
                            }
                        });
                    }, refresh_interval);
                }
                refresh_session();
            });
        </script>

и на сервере у меня есть этот код ...

 <?php
  @session_start();
  $_SESSION['last_refreshed_time'] = time();
  echo date('Y-m-d H:i a', $_SESSION['last_refreshed_time']).' - '.session_id();
 ?>

явижу, что вызов ajax сделан в указанный интервал, и я могу видеть тот же идентификатор сеанса на каждом выходе ajax.Но все равно страница выходит из системы, если я обновляюсь через 30 минут ... Может кто-нибудь сказать мне, почему в этом случае сеанс не активен, даже если я сделал серверный вызов через несколько минут?

1 Ответ

0 голосов
/ 11 марта 2019

Если тайм-аут сеанса на вашем сервере составляет 30 минут, это означает 1800 сегментов, что означает 180000 микросекунд, как у вас в сценарии, но когда он будет выполнен, сеанс уже истекает.Вы должны обновить сеанс, прежде чем он умрет.Попробуйте изменить значение на 1790 сегментов или 179000 микросекунд, чтобы у вас было 10 секунд для выполнения ajax и обновления сеанса.

Обновите эту переменную до 179000

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