我正在使用Codeigniter和Tank Auth身份验证库。当用户到达需要登录且未登录的页面时,他将被重定向到登录页面。
问题:在localhost上,经常在刷新网页时,在页面开始加载之前最多需要30秒!有时,在等待页面加载后,似乎我已经注销,因为加载的页面是我被重定向到的登录页面。在实时服务器上,不会发生页面加载之前的长延迟,但用户可以看似随机退出。
这里发生了什么?如何找出导致长加载时间的代码部分?什么导致随机注销?
PHP代码(控制器)
function index() {
$this->load->module('auth');
if(!$this->auth->tank_auth->is_logged_in()) {
redirect('login');
}
// If user registered/logged in after landing on another page
if($this->session->userdata('entry_url')) {
$entry_url = $this->session->userdata('entry_url');
$this->session->unset_userdata('entry_url');
redirect($entry_url); // redirect back to entry url before registration/login
}
// Set User Session Variables
$user_id = $this->session->userdata('user_id');
$this->load->model('main_model');
$name = $this->main_model->get_user_first_last_name($user_id);
$this->session->set_userdata('first_name', $name['first_name']);
$this->session->set_userdata('last_name', $name['last_name']);
$this->load->view('main');
的config.php
$config['sess_cookie_name'] = 'cisession';
$config['sess_expiration'] = 0;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = TRUE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
答案 0 :(得分:0)
你的两个问题基本上都要求我们告诉你如何调试代码......如果你需要查看脚本的时间,请输入一些microtime()调用并输出差异以获得相当准确的执行时间
对于随机注销,任何人都可以在没有看到源代码的情况下提供任何帮助......你应该将范围缩小到不仅仅是“导致这种情况的原因”。任何事情都可能导致它,我们无法在没有更多信息的情况下提供相关见解。
答案 1 :(得分:0)
使用配置文件和基准测试类来分析您的代码。 http://codeigniter.com/user_guide/libraries/benchmark.html
另外,如果您有会话cookie,请检查它的大小。也许它超过了允许的限制(4096),这可能是导致用户退出的原因。