php - 安全地限制 PHP session 空间

标签 php performance session strace

我似乎无法在任何地方找到此信息,所以我想在这里问一下。

目前我将我的 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 访问。如果是这种情况,您必须执行以下操作:

  1. 为您的 session 创建一个文件夹:
mkdir /var/sessions
  1. 编辑“fstab”文件:
vi /etc/fstab
  1. 创建映射到该文件夹​​的 RAM 磁盘条目:
none   /var/sessions   tmpfs   defaults,size=50M   1   2
  1. 在“fstab”中保存更改。

  2. 挂载新的内存盘:

mount -a

注意:在“4”点,我分配了 50 Mb 的 RAM 空间。您必须在服务器 RAM 中分配可供用户使用的空间。

希望对您有所帮助。

关于php - 安全地限制 PHP session 空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34803912/

相关文章:

php - 将 group by 和 min 子句与 inner join 一起使用时数据不一致

.net - 为什么编译的正则表达式性能比解释的正则表达式慢?

javascript - Ajax 请求和 SESSION

performance - 通过多线程进行文件复制优化

python:与cgi脚本中的 session 交互

windows - 如何使用 Windows 从客户端覆盖 X2GO_NXAGENT_DEFAULT_OPTIONS?

php - 是否可以使用 html/php 限定提交范围?

php - 检测虚拟机 ovf 中所做的更改

javascript - php语法有问题吗?

c# - 从另一个类继承的类的构造函数是否效率较低?