javascript - PHP 是单独存储 session 还是共享内存?

标签 javascript php memory redis session-cookies

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

最佳答案

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

如果您试图确定是否所有 session 都已过期(因为所有 session 都已过期,所以没有客户端连接)您将需要清除 PHP 垃圾收集器尚未找到的 session 文件,扫描 session 目录以查找任何文件, 如果目录中不存在 session 文件,您可以假设站点上没有事件用户。

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

关于javascript - PHP 是单独存储 session 还是共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814425/

相关文章:

php - Symfony 表单字段即使有错误也有效?

java - Java 应用程序运行时出现“无法分配内存”(errno=12) 错误

c - 动态分配动态分配结构的数组?

algorithm - R 中存在哪些并行算法,处理大数据

javascript - Js 闭包 : Function fails during second invoke

javascript - 使用 hyperHTML 和 hyperhtml-app 中的链接进行导航

javascript - Vue 3 : emit warning even though emits is present

php - Codeigniter 不工作 MongoDB 连接

javascript - 函数内部提示

javascript - 更改 'option' 标记的值后的 Ajax 调用