2012-04-06 3 views
0

私は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; 
+0

私はしばしば同僚のコードでこの動作を見ていますが、ソリューションはしばしばPHPセッションを使用しないでください(スクリプトの実行時間全体でセッションファイルをロックするため)。開始点は、最後にmemcacheに書き込みます。その間にロックはありません。 –

+0

[PHPスクリプトをプロファイルする最も簡単な方法]の複製が可能です。(http://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script) – Amber

答えて

0

ます場合はご質問の両方が基本的に...コードをデバッグするためにどのように伝えるために私たちを求めていますあなたのスクリプトのタイミングを見たり、microtime()呼び出しを投げたり、差分を出力したりして、かなり正確な実行時間を得る必要があります。

ランダムログアウトに関しては、誰もがソースコードを見ることなく助けてくれる方法があります。スコープを「これを引き起こす可能性のあるもの」以上のものに絞り込む必要があります。何かがそれを引き起こしている可能性があります、我々はより多くの情報を持たずに関連する洞察を提供する方法がありません。

Also, what have you tried?

0

あなたのコードをプロファイリングするために、プロファイルやベンチマーククラスを使用します。 http://codeigniter.com/user_guide/libraries/benchmark.html

また、セッションCookieがある場合は、そのサイズを確認してください。たぶん許可された制限(4096)を超えているため、ユーザーをログアウトさせる原因となる可能性があります。

関連する問題