• 技术文章 >后端开发 >PHP问题

    php session如何设置多级目录存放

    藏色散人藏色散人2020-08-11 08:57:37原创485

    php session目录设置的方法:首先打开“php.ini”文件;然后找到“session.save_path”选项并修改;接着指定SID字符串中的每个字符内保存多少bit即可。

    推荐:《PHP视频教程

    php session实现多级目录存放

    当一个目录下有很多文件时,服务器的处理性能会变低,php默认的session仅仅存放在/tmp目录下,未进行分级,当有一定的访问量时,就存在性能问题了。

    推荐:《php session 会话(专题)

    首先,修改 php.ini的 session.save_path 选项修改如下:

    session.save_path = “2;/tmp/session” (去掉前面分号)

    表示把session存放在 “/tmp/session” 目录下,并且分成 2 级子目录

    一般情况下2级目录就够了,就能够处理相当大的访问量了

    ———————–

    其他注释

    session.hash_function = 0

    ; 生成SID的散列算法。SHA-1的安全性更高一些

    ; 0: MD5 (128 bits)

    ; 1: SHA-1 (160 bits)

    ; 建议使用SHA-1。

    session.hash_bits_per_character = 4

    ; 指定在SID字符串中的每个字符内保存多少bit,

    ; 这些二进制数是hash函数的运算结果。

    ; 4: 0-9, a-f

    ; 5: 0-9, a-v

    ; 6: 0-9, a-z, A-Z, “-“, “,”

    ; 建议值为 5

    ————————–

    php源码文件中ext/session/mod_files.sh文件,可以辅助生成目录,就不用自己在写脚本了

    #! /bin/sh
     
    if test "$2" = ""; then
    echo "usage: $0 basedir depth"
    exit 1
    fi
     
    if test "$2" = "0"; then
    exit 0
    fi
     
    hash_chars="0 1 2 3 4 5 6 7 8 9 a b c d e f"
    if test "$3" -a "$3" -ge "5"; then
    hash_chars="$hash_chars g h i j k l m n o p q r s t u v"
    if test "$3" -eq "6"; then
    hash_chars="$hash_chars w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - ,"
    fi
    fi
     
    for i in $hash_chars; do
    newpath="$1/$i"
    mkdir $newpath || exit 1
    sh $0 $newpath `expr $2 - 1` $3
    done

    设置为可执行之后,运行以下命令来创建哈希目录:

    #cd /root/soft_install/php-5.3.5/ext/session
    #./mod_files.sh /tmp/session 2 5

    三个参数依次表示,存放路径, 几级目录,每个目录生成多少个目录(参考session.hash_bits_per_character)

    另外需要注意修改 /tmp/session的权限,保证运行php的帐号有权限读写

    php中设置多级目录session的问题

    在 php.ini 中找到 session.save_path 将值设置为 session.save_path = '3;/tmp/session'; 即可开启三级目录保存session。但是php不会自动生成目录结构,这时可以借助源码包 ext/session 目录下的 mod_files.sh 来生成目录

    $ bash mod_files.sh /tmp/session 3

    生成完成后发现仍然不能生成session,纠结了半天,打开mod_files.bat才发现玄机,原来后面还需要带一个参数,对应于 php.ini 中的 session.hash_bits_per_character ,这个值默认是4,development和production版本的默认配置里是5,于是用下面的命令从新生成目录

    $ bash mod_files.sh /tmp/session 3 5

    终于可以登录了。

    以上就是php session如何设置多级目录存放的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php
    上一篇:php如何跳转新窗口 下一篇:php date的用法是什么
    大前端线上培训班

    相关文章推荐

    • php获取不到session怎么办• php怎么删除session会话• php session跳转失效怎么办• PHP获取不到SESSION信息怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网