首页 > 数据库 >配置PHP的Session存储到Mysql / Redis / memcache 以及使用opcache以及apc缓存清除工具cachetool区分php版本-否则可能无效的问题解决

配置PHP的Session存储到Mysql / Redis / memcache 以及使用opcache以及apc缓存清除工具cachetool区分php版本-否则可能无效的问题解决

时间:2024-09-08 10:53:40浏览次数:13  
标签:save php memcache Redis session cachetool apc PHP CacheTool

一、配置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

相关文章

  • Redis 事务:支持回滚吗?深入解析
    今天我们要来探讨一个关于Redis事务的重要问题:Redis事务支持回滚吗?这个问题在Redis的使用中经常被提及,对于正确理解和使用Redis事务至关重要。那么,让我们一起深入解析这个问题吧!一、Redis事务简介在了解Redis事务是否支持回滚之前,我们先来简单回顾一下Redis事......
  • [Redis]事务特性
    redis事务的ACID性质讨论A原子性单个Redis命令的执行是原子性的,但Redis没有在事务上增加任何维持原子性的机制,所以Redis事务的执行并不是原子性的如果一个事务队列中的所有命令都被成功地执行,那么称这个事务执行成功另一方面,如果Redis服务器进程在执行事务的过程中被......
  • Redis 事务:支持回滚吗?深入解析》
    今天我们要来探讨一个关于Redis事务的重要问题:Redis事务支持回滚吗?这个问题在Redis的使用中经常被提及,对于正确理解和使用Redis事务至关重要。那么,让我们一起深入解析这个问题吧!一、Redis事务简介在了解Redis事务是否支持回滚之前,我们先来简单回顾一下Redis事务的基......
  • Redis 管道的神奇力量
    《Redis管道的神奇力量》嘿,Redis爱好者们!今天我们要来探索一个Redis中非常强大且实用的特性——管道(Pipeline)。如果你想让你的Redis操作更加高效,那么这篇文章绝对值得一读。一、Redis管道是什么Redis管道是一种在客户端和服务器之间批量执行命令的技术。它允许客户端将......
  • [Redis]Redis到底是单线程还是多线程程序?
    概述这里我们先给出问题的全面回答:Redis到底是多线程还是单线程程序要看是针对哪个功能而言,对于核心业务功能部分(命令操作处理数据),Redis是单线程的,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存储服务的主要流程,所以一般我们认为Red......
  • Centos7怎么安装Redis5.0
    Centos7怎么安装Redis5.0转载:https://www.php.cn/faq/553616.htmlWBOY发布:2023-06-0119:08:49转载1737人浏览过 一、安装gcc依赖由于 redis 是用C语言开发,安装之前必先确认是否安装gcc环境(gcc-v),如果没有安装,执行以下命令进行安装 [root@localho......
  • 【redis】数据量庞大时的应对策略
    文章目录为什么数据量多了主机会崩分布式系统应用数据分离架构应用服务集群架构负载均衡器数据库读写分离引入缓存冷热分离架构分库分表微服务是什么代价优势为什么数据量多了主机会崩一台主机的硬件资源是有上限的,包括但不限于一下几种:CPU内存硬盘网络…服务器......
  • 【redis】redis编译和redis.conf配置
    下载源码reids解压编译#解压tar-zxvfredis-5.0.14.tar.gzcdredis-5.0.14/makePREFIX=/opt/redisinstall#requirepassroot#开启远程访问bind0.0.0.0protected-modeno#修改日志打印路径,修改redis.confdaemonizeyeslogfile/var/log/redis.lo......
  • redis的主从复制、哨兵和集群部署
    Redis的主从复制主从复制引言实际生产环境下,单机的redis服务器是无法满足实际的生产需求的。第一,单机的redis服务器很容易发生单点故障,即使redis提供了各种持久化的方法来避免数据的丢失,但是物理上的故障(硬盘损毁等)还是无法完全避免的。第二,如果对单台机器的性能进行纵......
  • redis的基本使用
    Redis简介Redis是完全开源免费的,遵守BSD协议,高性能的基于键值对(key-value)的NoSQL(NotOnlySQL)数据库。SQL(StructQueryLanauge结构化的查询语言)。引申含义RDBMS产品,传统的关系型数据库,存储格式化的表格数据。NOSQL(NotOnlySQL)不仅仅只有关系型数据库。引申含......