PHP 的自带内存共享 APCu 和 shm

APCu

  • 扩展下载地址:http://pecl.php.net/package/APCu
  • php.ini需要配置:
    extension=php_apcu.dll
    apc.enabled=1
    apc.shm_size=32M
    apc.enable_cli=1
    具体配置可查看http://php.net/manual/zh/apcu.configuration.php

相关文章:
https://support.cloud.engineyard.com/hc/en...

https://www.cnblogs.com/yjf512/p/3171056.h...

<?php
class APCu
{
    public static function get($key)
    {
        return json_decode(apcu_fetch($key), true);
    }

    public static function set($key, $data, $ttl)
    {
        return apcu_store($key, json_encode($data), $ttl);
    }
}

if (PHP_SAPI == 'cli' || !function_exists('apcu_store')) {
    //不要闹啦 上面说了不支持 cli 模式 和 必须支持APCu扩展的缓存
    return;
}
var_dump(Apcu::get("TEST"));
Apcu::set("TEST", ["key" => "value"], 10);
var_dump(Apcu::get("TEST2"));

shm

相关文章:
http://www.laruence.com/2008/04/21/101.htm...

<?php

//使用信号量扩展共享内存
$key = ftok(__FILE__, 'a');

$share_key = 1;
//创建一个共享内存,大小为1024字节,权限为755$
$shm_id = shm_attach($key, 1024, 0755);

var_dump($shm_id);
//将一个key=>value放进共享内存
$message1 = "你好啊1";
shm_put_var($shm_id, $share_key, $message1);
//重复使用key ,前一个设置的值会被后一个设置的值覆盖掉。
$message2 = "你好啊2";
shm_put_var($shm_id, $share_key, $message2);

//读取一个共享内存值
$read_message = shm_get_var($shm_id, $share_key);
echo $read_message . PHP_EOL;
//并不是取走了,而是读取
$read_message2 = shm_get_var($shm_id, $share_key);
echo $read_message2 . PHP_EOL;
//判断共享内存中,某个值是否存在
$isexists = shm_has_var($shm_id, $share_key);
var_dump($isexists);
//删除一个值
shm_remove_var($shm_id, $share_key);
//判断共享内存中,某个值是否存在
$isexists = shm_has_var($shm_id, $share_key);
var_dump($isexists);
//删除一个共享内存
shm_remove($shm_id);
//关闭共享内存的连接
shm_detach($shm_id);
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5
Flex

还不如用redis来的实际

4年前 评论
不忘初心 (楼主) 4年前

composer 的时候可以将文件存到这个缓存里,有对应的命令,现在也就用到了这个场景

4年前 评论
不忘初心 (楼主) 4年前
captain2021 (作者) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!