PHP是单独存储会话还是在共享内存中存储?

时间:2017-05-05 22:08:44

标签: javascript php memory redis session-cookies

假设我有一个网站在启动时写入数据库。如果多个用户同时登录此网站,这是否意味着它会尝试写入数据库N次,其中N =用户数量?如果连接断开,有没有办法强制PHP只写入数据库(只有当所有其他用户当前不在网站上时才写入)?你有什么建议可以减少对数据库的过度写入或请求的可能性?

1 个答案:

答案 0 :(得分:0)

首先,PHP默认为会话文件。这些文件是在每个浏览器(aka用户)的第一次session_start();调用时创建的。之后,用户将相同的文件用于子序列session_start();,直到他们关闭浏览器。但是,当客户端关闭浏览器时,不会从服务器清除会话文件,因为它们具有PHP定义的生命周期。

如果您要确定所有会话是否已过期(自所有会话过期后没有客户端连接),您将需要清除PHP垃圾收集器尚未找到的会话文件,扫描会话目录中的任何文件,如果目录中不存在会话文件,则可以假定该站点上没有活动用户。

请注意,如果您使用内存模块(例如:php-redis来存储会话),则需要将检查会话所需的路径从文件更改为用于检查会话的任何处理程序