私はTank Auth認証ライブラリでCodeigniterを使用しています。ユーザーがログインを必要とするページに到達し、ログインしていない場合、ユーザーはログインページにリダイレクトされます。ページの読み込みを遅くする方法を調べるには
問題:ローカルホストでは、Webページを最新表示すると、ページが読み込まれる前に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に書き込みます。その間にロックはありません。 –
[PHPスクリプトをプロファイルする最も簡単な方法]の複製が可能です。(http://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script) – Amber