通常我们将 session 存储到 file 或者 memcached
现今异地结构一体化,通常许多人会将 session 存储在 redis 里面
准备:
PHP 8.2.16
Pecl_Redis 6.0.1
安装拓展:
1 2 3 4 5 6 7 8 wget https://pecl.php.net/package/redis/6.0.1 mv redis-6.0.1.tgz php-redis-6.0.1.tgztar -zxvf php-redis-6.0.1.tgz mv redis-6.0.1 php-redis-6.0.1cd php-redis-6.0.1/usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config make && make install
修改 php.ini 文件:
`vim /etc/php.ini `
追加 redis 配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 extension = "/usr/local/php/lib/extensions/no-debug-non-zts-20220829/redis.so" session.save_handler = redis session.save_path = "tcp://192.168.2.11:6379?auth=passwd" ;session.save_path = "tcp://192.168.2.11:6379" session.use_strict_mode = 0 session.use_cookies = 1 session.use_only_cookies = 1 session.name = PHPSESSID session.auto_start = 0 session.cookie_lifetime = 0 session.cookie_path = / session.cookie_domain = session.cookie_httponly = session.serialize_handler = php session.gc_probability = 1 session.gc_divisor = 1000 session.gc_maxlifetime = 1440 session.referer_check = session.cache_limiter = nocache session.cache_expire = 180 session.use_trans_sid = 0 session.hash_function = 0 session.hash_bits_per_character = 5
存储到 redis 里面的 keys 的名称是类似 PHPREDIS_SESSIONxxxxxxxxx ,我们只需要连接到 redis,并执行 keys PHPREDIS_SESSION* 即可列出全部的 sessionkeys.若存在则为成功。
keys PHPREDIS_SESSION*
"PHPREDIS_SESSION:77fsmg64qqebooaotlue6050g7"
测试 php 脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php session_start ();$redis = new Redis ();$redis ->connect ('your_remote_redis_host' , 6379 ); $redis ->auth ('your_redis_password' ); ini_set ('session.save_handler' , 'redis' );ini_set ('session.save_path' , 'tcp://your_remote_redis_host:6379' );$_SESSION ['test' ] = 'Hello Redis' ;echo $_SESSION ['test' ];$redis ->close ();