PHP

TP框架基于workerman + MYSQL实现PHP数据缓存

字号+ 编辑: 国内TP粉 修订: IT男在阿里 来源: ThinkPHP 2023-09-11 我要说两句(1)

因workerman相关项目意外事件引发负面反馈较多, 文章系转载, 仅供参考, 请勿用于线上生产。

因workerman相关项目意外事件引发负面反馈较多, 文章系转载, 仅供参考, 请勿用于线上生产

最近在做一个即时通讯的项目,采用WorkerMan + ThinkPHP5.0.10开发。涉及到缓存处理,为了方便WorkerMan和ThinkPHP多端都能够调用,于是写了这个缓存方法。其实我更中意redis一些,还是以客户服务器环境为准则吧~~

数据表采用MEMORY引擎,以确保读取速度。

使用方法:

// 读取缓存
$data = cache('group_53_online');
// 更新换存
$data = 53; //支持数组
cache('group_53_online',$data);
// 删除缓存
cache('group_53_online',null);

数据库

DROP TABLE IF EXISTS `wdphp_cache`;
CREATE TABLE `wdphp_cache` (
  `key` varchar(255) NOT NULL,
  `data` varchar(500) DEFAULT NULL COMMENT '缓存',
  PRIMARY KEY (`key`),
  KEY `key` (`key`) USING BTREE
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

函数文件

function cache($key='',$data=false){
    if(!$key) return false;
    $db = Db::instance('db');  // 数据库链接

    if($data===null){
        // 删除缓存
        $db->query("DELETE `wdphp_cache` WHERE key='{$key}'");
        return TRUE;
    }

    if($data === false){
        // 读取个条记录
        $info = $db->row("SELECT key,data FROM `wdphp_cache` WHERE key='{$key}'");
        if($info){
            $data = json_decode($info['data'],true);
            $data = $data['data'];
        }else{
            $data = '';
        }
        return $data;
    }
    if($key && $data){
        $res['data'] = $data;
        $data = json_encode($res);
        $db->query("REPLACE INTO `wdphp_cache` ( `key`,`data`) VALUES ('{$key}', '{$data}')");
    }
    return $data;
}
阅完此文,您的感想如何?
  • 有用

    1

  • 没用

    1

  • 开心

    1

  • 愤怒

    1

  • 可怜

    1

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.交流群: PHP+JS聊天群

相关课文
  • mac开发接入微信公众号接口返回报错 cURL error 56: SSLRead() return error -9806

  • pecl安装程序时报错Array and string offset access syntax with curly braces is no longer supported

  • PHP的换行符是什么

  • 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

我要说说
网上宾友点评
1 楼 IP 111.192.165.181 的嘉宾 说道 : 1686014000
现在用workerman的纯傻批不解释