安全地限制PHP会话空间

时间:2016-01-15 03:27:14

标签: php performance session strace

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

目前我将PHP会话路径(session.save_path)设置为服务器硬盘上的文件夹。

我创建了一个简单的PHP程序,如下所示:

<?php echo "TEST"; ?>

然后我用strace执行它,并且最长时间的strace日志中的进程是shmdt(),当我匹配数字时,它引用了session.save_path中的sem文件。

我可以尝试缓解此问题的一种方法是为php会话文件创建一个ram磁盘,但我希望能够在PHP配置文件本身中添加一个配置条目,以便PHP了解它有足够的空间来在删除旧条目之前使用。

我需要什么配置条目才能完成此任务?

如果可能,我可以使用哪些配置条目来消除shmdt()电话?

我在PHP 5.5.29版本中测试了我的脚本。

1 个答案:

答案 0 :(得分:0)

我理解您正在尝试的是防止会话文件存储在会话文件夹(session.save_path)中。

如果您有权访问PHP配置文件(php.ini),则必须调整&#34; session.gc_maxlifetime&#34;的值。到您需要的最长持续时间,以便从服务器中删除文件。

PHP文档: http://ar.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime

要为&#34; RAM磁盘&#34;分配空间,需要对服务器进行root访问。如果是这种情况,您必须执行以下操作:

  1. 为您的会话创建一个文件夹:
  2. mkdir /var/sessions
    1. 编辑&#34; fstab&#34;文件:
    2. vi /etc/fstab
      1. 创建映射到该文件夹​​的RAM磁盘条目:
      2. none   /var/sessions   tmpfs   defaults,size=50M   1   2
        1. 保存&#34; fstab&#34;。

        2. 中的更改
        3. 挂载新的RAM磁盘:

        4. mount -a

          注意:在&#34; 4&#34;点,我正在分配50 Mb的RAM空间。您必须在服务器RAM中分配可供用户使用的空间。

          我希望这会有所帮助。