时光绘梦集
位置:首页PHP正文

道法自然 2025/04/19 周6

php中apcu的替代

我在使用免费虚拟主机的过程中,自己的代码中,有涉及到使用apcu的部分,然后虚拟主机的环境都是服务商配好的,不能自助修改,导致代码执行出问题。

下面是用sqlite3代替apcu的替代方案。

if (!function_exists('apcu_store') || !ini_get('apc.enabled')) {
    $db = new SQLite3('cache.sqlite');
    $db->exec('CREATE TABLE IF NOT EXISTS cache (key TEXT PRIMARY KEY, value TEXT, expire INTEGER)');
    function apcu_store($key, $value, $ttl = 3600) {
        global $db;
        $stmt = $db->prepare('REPLACE INTO cache (key, value, expire) VALUES (:key, :value, :expire)');
        $stmt->bindValue(':key', $key);
        $stmt->bindValue(':value', json_encode($value));
        $stmt->bindValue(':expire', time() + $ttl);
        return $stmt->execute();
    }
    function apcu_fetch($key) {
        global $db;
        $stmt = $db->prepare('SELECT value, expire FROM cache WHERE key = :key');
        $stmt->bindValue(':key', $key);
        $result = $stmt->execute()->fetchArray(SQLITE3_ASSOC);
        if (!$result || $result['expire'] < time()) return false;
        return json_decode($result['value'], true);
    }
}

先保存,后续在测试。


上一篇:json转php数组
下一篇:打砖块