Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 数据库会话存储大小限制_Codeigniter_Session_Caching - Fatal编程技术网

Codeigniter 数据库会话存储大小限制

Codeigniter 数据库会话存储大小限制,codeigniter,session,caching,Codeigniter,Session,Caching,我正在构建一个web应用程序,我正在考虑一种将facebook与我的应用程序集成的方法,当用户的朋友登录我的应用程序时,我会在用户的会话数据中临时缓存他们的FBID的json数组。我正在使用数据库来跟踪会话数据 这是CodeIgniter的数据库表,用于跟踪用户会话: CREATE TABLE IF NOT EXISTS `ci_sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address var

我正在构建一个web应用程序,我正在考虑一种将facebook与我的应用程序集成的方法,当用户的朋友登录我的应用程序时,我会在用户的会话数据中临时缓存他们的FBID的json数组。我正在使用数据库来跟踪会话数据

这是CodeIgniter的数据库表,用于跟踪用户会话:

    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(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);
对于那些熟悉FQL的人,我正在考虑缓存此查询的结果:

SELECT uid, is_app_user FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = xxxxxxxx)
ORDER BY is_app_user DESC
LIMIT 0,1000
这将返回一个用户朋友列表,以及这些朋友是否是我的facebook应用程序的用户。我有大约770个Facebook好友,这个查询返回的json编码数组大小约为33kb

我在应用程序的后端使用CodeIgniter,我想知道为每个会话存储大约33kb的数据是否会有任何不利影响。我计划让会话在一段合理的时间后过期,以防止我的表永远增长。有人有什么见解吗

更新


只想补充一点,驱动我的会话表的引擎是MyISAM(不确定这是否是最好的,InnoDB的表级锁定与行级锁定……需要研究一下),FBID自然会作为序列化JSON存储在user_data(TEXT)列中

,我不认为这种方法存在性能问题。问题来自可伸缩性和并发用户的数量。一旦会话结束,内存将被释放。因此,这是一个你期望多少流量的问题。如果您希望有大量并发用户,那么这可能会使您的服务器陷入困境(因为每个用户在活动时都会阻塞会话所需的内存)


我的问题是将这些数据保存在会话中而不是缓存文件或数据库表中的重要性。您可以随时根据请求检索数据,而不是在会话中将其冻结。

我不认为这种方法存在性能问题。问题来自可伸缩性和并发用户的数量。一旦会话结束,内存将被释放。因此,这是一个你期望多少流量的问题。如果您希望有大量并发用户,那么这可能会使您的服务器陷入困境(因为每个用户在活动时都会阻塞会话所需的内存)


我的问题是将这些数据保存在会话中而不是缓存文件或数据库表中的重要性。您总是可以根据请求检索数据,而不是在会话中将其冻结。

文件缓存不适合我的情况,因为我使用的是负载平衡,但在数据库表中缓存列表也可能有效。我必须进一步研究一下。文件缓存不适合我的情况,因为我使用的是负载平衡,但是在数据库表中缓存列表也可以。我得再仔细研究一下。