Приложение My CodeIgniter использует библиотеку сеансов и сохраняет данные в БД.
У меня возникли проблемы, когда пустые сеансы создаются после определенного вызова ajax.
При расследовании кажется, что было вызвано два одновременных вызова функций, которые требуют проверки сеанса. Один потерпит неудачу, а другой будет в порядке.
Я смог исправить это, не одновременно отключив их. Но я до сих пор не понимаю ПРИЧИНЫ, почему он терпит неудачу. Связано ли это с одним вызовом, обновляющим cookie пользователя, и 2-м недействительным вызовом? Или, может быть, при чтении БД он как-то умирает?
Я немного изучил класс ядра Session и не нашел никаких оснований для этой причины.
Если у кого-то была такая же проблема, прежде чем я буду признателен за любые советы по отладке или по какой причине.
Спасибо!
ИЗМЕНИТЬ:
Я изначально сказал, что было возвращение статуса 408. Это был несвязанный случай.
Это функция, которая запускает MyVar.refresh() параллельно:
function (event)
{
var self$ = this.a$;
var uid = this.b$.val();
var tid = this.c$.val();
var jqxhr = $.post('/controller1/index',{'uid':uid,'tid':tid,'action':true},function(re)
{
if(re.message != 'success')
{
MyVar.alert('<span class="msg_error sprite"></span>' + re.error);
MyVar.refresh();
}
},'json');
MyVar.refresh();
return stopDefault(event);
};
ВОЗМОЖНЫЕ РЕШЕНИЯ:
Найдено следующее: http://codeigniter.com/forums/viewthread/102456/
По-видимому, он неплохо работает с ajax. Одним из решений является запрет обновления сеанса, если это вызов ajax; только проблема в том, что наш сайт в основном построен с помощью ajax..
Также, просто опустил sess_time_to_update на что-то очень частое, и ajax все в порядке. Также обновился браузер, и он не затягивался. Не уверен, почему, если идентификатор сеанса уже был изменен при вызове ajax, и cookie браузера никогда не обновлялся.