THINKPHP和memcached合并操作

THINKPHP和memcached合并操作namespace app\index\controller;require __DIR__ . '/../../../vendor/memcached/class/memcached.php';

class Index
{
    public static $memcached = false;

    public function __construct()
    {
        self::$memcached = $this->getMemcached();
    }

    public function index()
    {
        $key = $_GET['key'] ?? 5;
        $nums = @self::$memcached->get($key);
        if ($nums === null) {
            $nums = model('Blog')->where('id', $key)->value('view');
            self::$memcached->set($key, $nums);
        }

        $nums = self::$memcached->incr($key);
        if ($nums % 5 == 0) {
            model('Blog')->where('id', $key)->update(['view' => $nums]);
        }
        echo $nums;
    }

    /***
     * @return bool|\memcached
     * 通过单例模式返回memcached对象
     */
    public function getMemcached()
    {
        if (self::$memcached) {
            return self::$memcached;
        } else {
            return self::$memcached = new \memcached(array(
                'servers' => array('127.0.0.1:11211'),
                'debug' => false,
                'compress_threshold' => 10240,
                'persistant' => true));
        }
    }
}


最后编辑于:2019/12/23作者: 牛逼PHP

发表评论