我正在使用Codeigniter和Tank Auth認證庫。當用戶到達需要登錄並且尚未登錄的頁面時,他將被重定向到登錄頁面。如何找出什麼在減慢頁面的加載速度
問題:在本地主機上,當我刷新網頁時,頻繁地刷新網頁可能需要長達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;
我經常看到同事的代碼這種行爲,解決的辦法是經常不使用PHP的會話的所有(因爲他們鎖定的腳本的整個運行時間的會話文件),而使用代碼從內存緩存的讀取開始,然後在末尾寫入memcache,兩者之間沒有鎖定。 – 2012-04-06 03:57:41
可能的重複[簡單的方法來分析一個PHP腳本](http://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script) – Amber 2012-04-06 04:53:45