【问题标题】:size of session in codeignitercodeigniter 中的会话大小
【发布时间】:2010-12-13 16:53:11
【问题描述】:

如何增加会话框架 CodeIgniter 的大小?

标准大小为 04 kb

【问题讨论】:

  • CodeIgniter 使用 cookie 来存储会话信息。如果您要存储如此大量的数据,您应该考虑使用数据库来存储信息。
  • 谢谢,我将程序更改为不在会话中保存一些数据

标签: php session codeigniter


【解决方案1】:

这与codeigniter会话无关,4kb的数据是cookie可以容纳的最大大小。

要保存更多数据,请使用数据库(请参阅http://codeigniter.com/user_guide/libraries/sessions.html 中的“将会话数据保存到数据库”)。

【讨论】:

【解决方案2】:

不要在会话中存储大量数据;它将在每次请求时加载到脚本的内存中。

改用文件或数据库,使用会话 ID 将数据连接到会话。

【讨论】:

    【解决方案3】:

    是的,您需要使用数据库。是的,4kb 限制是浏览器对 cookie 大小的限制,这是 Netscape 十年前选择的。无论如何,保持 cookie 很小通常是一个好习惯,因为每个请求标头到服务器上的对象(对于同一域)都会发送此 cookie。

    另外,关于数据库会话表的 CodeIgniter 的一个很好的提示,将类型设置为 MEMORY,以便会话存储在 RAM 而不是磁盘中,这使您的站点更快(访问站点时磁盘读取更少)。当服务器重新启动时,您会丢失会话数据,但在重新启动之前,这类信息通常并没有太大用处。

    创建 CodeIgniter MySQL 表的 SQL:

    CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(50) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id)
    );
    

    CodeIgniter PHP 选项(在 application/config/config.php 中):

    $config['sess_cookie_name']     = 'ci_session';
    $config['sess_expiration']      = 7200;
    $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;
    

    【讨论】:

      【解决方案4】:

      @all 虽然 Session 可以为此服务,但再次点击 db 以获得公共数据甚至不是一个好习惯。我建议为此目的使用 PHP Native 会话,请参阅此处如何在 CI Replacing CI session with PHP Native Session 中使用 PHP Native Sessions

      【讨论】:

      • 当我尝试这个时,我得到这个错误:An Error Was Encountered Non-existent class: Session
      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 2017-10-16
      • 2017-08-07
      • 1970-01-01
      相关资源
      最近更新 更多