首页 > 解决方案 > Code Ignitor Session 和页面加载问题

问题描述

我对 codeignitor 会话有一个问题。我创建了一个名为“Welcome.php”的控制器,其中包含三个功能。一个是index,第二个是home,最后一个是getAjaxTestData.

当我在浏览器(http://localhost:9019/welcome)中加载欢迎控制器时,它会默认调用索引函数并设置一些会话并加载欢迎视图。在视图文件中,我将 ajax 请求发送给getAjaxTestData函数,并在该函数中设置睡眠 50 秒。

一旦调用 ajax 请求,它会等待 50 秒。同时,如果我通过调用 Home 函数链接“https://localhost:9019/welcome/home”打开另一个链接,则在上一个 ajax 请求完成之前不会加载。

仅当我设置会话时才会发生这种情况。如果我不设置会话,那么即使我在 getAjaxTestData 函数中设置了睡眠,那么 https://localhost:9019/welcome/home 也会立即打开。

下面是我的控制器-您能检查一下..为什么在使用会话时其他页面正在等待加载,直到上一页 ajax 请求完成?有什么问题吗?

我的Welcome.php控制器中的代码

public function index()
    {
            
            $newdata = array(
                    'user_id' => "123",
                    'username' => "siddu",
             );
            
            $this->session->set_userdata($newdata);
            session_write_close();
            $this->load->view('welcome_message');
    }
        public function getAjaxTestData()
        {
            //echo "<pre>";print_r($this->session->userdata);echo "</pre>";die();
            sleep(15);
            $data=array();
            $data['success']=0;
            $data['start_time']=date("Y-m-d h:m:s");
            
            $data['end_time']=date("Y-m-d h:m:s");
            $data['success']=1;
            echo json_encode($data);
            die();
        }
        function Home()
        {
            $this->load->view('home');
        }

标签: ajaxperformancecodeignitersessionsleep

解决方案


您的代码没有任何问题。CodeIgniter 重写 Session 库,默认加锁,防止使用同一个 session 的两个 HTTP 请求同时运行。在此处查看 codeigniter 文档


推荐阅读