代码点火器auth(Tank Auth)无缘无故地将我退出(即可能过载)

时间:2013-01-15 09:08:23

标签: javascript ajax codeigniter apache2 tankauth

我有一个控制器和一个如下所示的视图,它可以在一段时间内完美运行,但是在向服务器发出一些请求后(即每隔一秒钟重新加载),它将在此行上失败

 if (!$this->tank_auth->is_logged_in()) 

无缘无故,我不知道天气是拥挤还是......

当我尝试在firebug中调试客户端代码并在此行上保留一个断点时

  $('#buy_reload').load('buy/reload'); //And press f8 every time
它有点像魅力是什么问题?加载?

Z控制器

class Buy extends CI_Controller
{
function __construct()
{
    parent::__construct();

    $this->load->helper('url');
    $this->load->library('tank_auth');
    $this->load->model(array('tank_auth/users','players','cash','inventory','items','shopping_cart','purchases','processing'));
}

function reload()
{
    if (!$this->tank_auth->is_logged_in()) { 
        redirect('/auth/login/');
    } else {
            //do those stuffs
           }

}
}

Z视图中的脚本

  <script>
   setInterval(function() {
   $('#buy_reload').load('buy/reload');
   }, 1 * 1000);
  </script> 

1 个答案:

答案 0 :(得分:2)

我在Tank Auth和CodeIgniter 2.1上遇到了类似的问题。 会话和Ajax调用似乎存在问题。 以下链接将为您提供帮助

http://ellislab.com/forums/viewthread/199753/#962141

http://ellislab.com/forums/viewthread/203821/#951378

问题出在会话类的sess_update函数中,它在X秒后生成一个新的session_id。每个页面都有一个session_id,如果session_id在进行ajax调用之前到期,则该调用将失败。