php shared memory cache
最近在写php的时候,需要使用内存缓存,大家都知道有比较成熟的基于memcached,redis,以及apc等缓存。但是不是要装插件就是要第三方软件支持。在小项目中用起来不是很方便!
所以打算使用php的shared memory的shmop_*前缀的API来实现一个简单的缓存接口。
此函数支持两种调用方式,可以设置和获取缓存。设置的时候还能一并设置缓存过期时间。
function cache($key, $val=null, $expire=100) { static $_caches = null; static $_shm = null; if ( null === $_shm ) $_shm = @shmop_open(ftok('mcache.solt'), 'c', 0755, config('cache.size', null, 10485760)); if ( null === $_caches && $_shm && ($size = intval(shmop_read($_shm, 0, 10)))) $_caches = $size ? @unserialize(@shmop_read($_shm, 10, $size)) : array(); if (($time = time()) && $val && $expire){ $_caches[$key] = array($time + intval($expire), $val); if($_shm && ($size = @shmop_write($_shm, serialize(array_filter($_caches, function($ n)use($time){return $n[0] > $time;})), 10))) @shmop_write($_shm, sprintf('%10d', $size), 0); return $val; } return (isset($_caches[$key]) && $_caches[$key][0] > $time) ? $_caches[$key][1] : null; }不过有个缺点每次load cache的时候需要全部一起load,然后反序列化保存到静态数组里面。只能缓存一些比较小的数据。如果数据过大会不能更新缓存。
ETsale3.0是采用php+mysql+smarty+jquery开发的一个很小很小的管理程序,适用于中小企业对产品销售后的报表管理以及客户资料和联通记录管理。由于采用smarty做模板,所以更方便修改外观以适用于自己的公司。程序加入简单的srm管理系统安装方法:1、以二进制上传所有文件到服务器目录2、修改cache,templates_c,目录为可写(0777)3、把include\conf
0
我把这个函数和一些其他的基本函数(现在只有8个函数)放在一个utils仓库里面。也可以直接使用 composer require lloydzhou/utils 安装
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号