我似乎无法在任何地方找到此信息,所以我想在这里问一下。
目前我将我的 PHP session 路径 (session.save_path) 设置为服务器硬盘驱动器上的一个文件夹。
我创建了一个简单的 PHP 程序,如下所示:
<?php echo "TEST"; ?>
然后我用 strace 执行它,strace 日志中花费时间最长的进程是 shmdt()
,当我匹配数字时,它引用了 session.save_path 中的一个 sem 文件。
我可以尝试缓解这个问题的一种方法是为 php session 文件创建一个 ram 磁盘,但我希望能够将配置条目添加到 PHP 配置文件本身,以便 PHP 知道它有这么多空间来在删除旧条目之前使用。
我需要什么配置条目来完成这个?
如果可能,我可以使用哪些配置条目来消除 shmdt()
调用?
我在 PHP 版本 5.5.29 中测试了我的脚本。
最佳答案
我知道您正在尝试防止 session 文件过多地存储在 session 文件夹 (session.save_path) 中。
如果您有权访问 PHP 配置文件 (php.ini),则必须将“session.gc_maxlifetime”的值调整为您需要的最长持续时间,以便从服务器中删除文件。
PHP 文档: http://ar.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
要为“RAM 磁盘”分配空间,需要对服务器进行 root 访问。如果是这种情况,您必须执行以下操作:
- 为您的 session 创建一个文件夹:
mkdir /var/sessions
- 编辑“fstab”文件:
vi /etc/fstab
- 创建映射到该文件夹的 RAM 磁盘条目:
none /var/sessions tmpfs defaults,size=50M 1 2
在“fstab”中保存更改。
挂载新的内存盘:
mount -a
注意:在“4”点,我分配了 50 Mb 的 RAM 空间。您必须在服务器 RAM 中分配可供用户使用的空间。
希望对您有所帮助。
关于php - 安全地限制 PHP session 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803912/