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.交流群: 2702237 13835667

相關課文
  • mac開發接入微信公衆號接口返回報錯 cURL error 56: SSLRead() return error -9806

  • PHP的換行符是什麽

  • pecl安裝程序時報錯Array and string offset access syntax with curly braces is no longer supported

  • 由於商家傳入的H5交易參數有誤,該筆交易暫時無法完成,請聯繫商家解決

我要說說
網上賓友點評
1 樓 IP 111.192.***.181 的嘉賓 说道 : 很久前
现在用workerman的纯傻批不解释