一、配置PHP的Session存储到Mysql,Redis以及memcache等
PHP的会话默认是以文件的形式存在的,可以通过简单的配置到将Session存储到NoSQL 中,即提高了访问速度,又能很好地实现会话共享!
1. 默认配置:
session.save_handler = files
session.save_path = /tmp/
2. 配置到redis中:
方法一:修改 php.ini 的设置,修改后重启php-fpm
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
方式二:通过 ini_set() 函数设置
ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379");
3. 配置到memcache中:
#memcache扩展定义好的memcache,session存储处理器
ini_set('session.save_handler', 'memcache');
#所使用的memcached服务器信息
ini_set('session.save_path', 'tcp://127.0.0.1:11211');
#memcache分布式
//ini_set('session.save_path', 'tcp://127.0.0.1:11211;tcp://host2:port2;tcp://host3:port3');
4. 配置到MYSQL中:
相对比较麻烦,不建议使用,详细请参考:https://www.jb51.net/article/57177.htm
session.save_handler="use"
在php程序中需要写方法去调用,
session_set_save_handler(
array(&$this, 'open'), // 在运行session_start()时执行
array(&$this, 'close'), // 在脚本执行完成 或 调用session_write_close() 或 session_destroy()时被执行,即在所有session操作完后被执行
array(&$this, 'read'), // 在运行session_start()时执行,因为在session_start时,会去read当前session数据
array(&$this, 'write'), // 此方法在脚本结束和使用session_write_close()强制提交SESSION数据时执行
array(&$this, 'destroy'), // 在运行session_destroy()时执行
array(&$this, 'gc') // 执行概率由session.gc_probability 和 session.gc_divisor的值决定,时机是在open,read之后,session_start会相继执行open,read和gc
);
session_start(); // 这也是必须的,打开session,必须在session_set_save_handler后面执行
二、使用opcache以及apc缓存清除工具cachetool区分php版本,否则可能无效
今天在服务器上准备部署清除php-opcache缓存的工具cachetool,之前这里有一篇相关的文章:php生成xml文件的封装类文件-可生成带缩进格式化的xml文件及关于opcache缓存的操作小工具cachetool的使用_php 封装xml 库-CSDN博客,但在添加好cachetool.phar工具进行执行时,发现cachetool.phar没有任何的反应和提示信息,也没有任何的错误,在CacheTool的Github主页上看到这句话:
Compatibility
CacheTool 4.x works with PHP >=7.1 CacheTool 3.x works with PHP >=5.5.9 CacheTool 2.x works with PHP >=5.5.9 CacheTool 1.x works with PHP >=5.3.3
CacheTool 4.x适用于PHP >=7.1的环境,CacheTool 3.x适用于PHP >=5.5.9的环境,我使用的http://gordalina.github.io/cachetool/downloads/cachetool.phar是最新版的4.X,而我本面的PHP环境是PHP 5.6.15,即我下载的CacheTool 4.x不能用于我现在的PHP 5.6.15无法运行,但是CacheTool你好歹也报个版本问题的错误出来啊。。
#查看opcache配置信息
[on930 cachetool]$ php /opt/modules/cachetool/cachetool.phar opcache:configuration --fcgi=127.0.0.1:9000
[on930 cachetool]$
#没有任何反应,本机PHP环境5.6.15
[on930 cachetool]$ php -v
PHP 5.6.15 (cli) (built: Dec 11 2015 20:51:36)...
现在的关键是怎么获取老版本的CacheTool,但在百度上搜索没有得到多少有用的信息,GOOGLE了一下得到cachetool的老版本的下载地址,http://gordalina.github.io/cachetool/downloads/cachetool-3.2.1.phar 具体可以使用这个结构来拼接下载地址:More generally http://gordalina.github.io/cachetool/downloads/cachetool-{$TAG}.phar where {$TAG} is the git tag version。CacheTool都有哪些版本可以到github上的releases里面去看。这里使用如下:
[on930 cachetool]$ sudo wget http://gordalina.github.io/cachetool/downloads/cachetool-3.2.1.phar
[on930 cachetool]$ sudo chmod +x cachetool-3.2.1.phar
[on930 cachetool]$ sudo mv cachetool-3.2.1.phar cachetool.phar
#然后就可以对php5.6进行执行清理opcache缓存等了,。
[on930 cachetool]$ php /opt/modules/cachetool/cachetool.phar opcache:reset --fcgi=127.0.0.1:9000
CacheTool更多详细介绍地址:http://gordalina.github.io/cachetool/ ,除了使用127.0.0.1:900这种通过IP够连接php opcache外,对于使用socket的php也可以使用下面通过fcgi指定sock的存放位置:
$ php cachetool.phar opcache:status --fcgi=/var/run/php5-fpm.sock
也可将配置写在/etc/cachetool.yml配置文件中,CacheTool will look for this file on the current directory and in any parent directory until it finds one. If the paths above fail it will try to load /etc/cachetool.yml configuration file:
/etc/cachetool.yml配置文件内容格式如下:
adapter: fastcgi
fastcgi: 127.0.0.1:9000
#或者使用sock内容如下:
adapter: cli
fastcgi: /var/run/php5-fpm.sock
标签:save,php,memcache,Redis,session,cachetool,apc,PHP,CacheTool
From: https://blog.csdn.net/weixin_47792780/article/details/141721572