假设我有一个在启动时写入数据库的网站。如果多个用户同时登录该网站,是否意味着它将尝试写入数据库 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/