0

私はTankAuth認証ライブラリでCodeigniterを使用しています。ユーザーがログインが必要なページに到達し、まだログインしていない場合、ユーザーはログインページにリダイレクトされます。

問題:ローカルホストでは、ウェブページを更新するときに非常に頻繁に、ページの読み込みが開始されるまでに最大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;
4

2 に答える 2

0

どちらの質問も基本的に、コードをデバッグする方法を教えてほしいというものです...スクリプトのタイミングを確認する必要がある場合は、いくつかの microtime() 呼び出しを投入し、違いを出力して、かなり正確な実行時間を取得してください。

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

また、何を試しましたか?

于 2012-04-06T04:56:22.767 に答える
0

プロファイルとベンチマーク クラスを使用して、コードをプロファイリングします。 http://codeigniter.com/user_guide/libraries/benchmark.html

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

于 2012-04-06T09:38:02.630 に答える