PHP共享内存yac操作类
http://www.laruence.com/2013/03/18/2846.html 鸟哥介绍
https://www.cnblogs.com/willamwang/p/8918377.html 扩展安装
<?php /**
* 进程间共享内存操作类
*/
class Pshmop
{
protected static $_models = array();
private $_yac = null;
private static $_keyPrefix = 'shm_';
private static $_ttlMaxTime = ; //86400*90 为防止永久贮存及保存时间过久造成内存消耗严重导致数据被踢出 /**
* Returns the static model of the specified AR class.
* @param string $className active record class name.
* @return Order the static model class
*/
public static function model($className = __CLASS__)
{
$model = null;
if (isset(self::$_models[$className]))
$model = self::$_models[$className];
else {
$model = self::$_models[$className] = new $className(null);
}
return $model;
} public function __construct() {
if(extension_loaded("yac")){
$this->_yac = new Yac(self::$_keyPrefix);
}
} /**
* add value
* @param mixed $keys
* @param mixed $value
* @param int $ttl
* @return mixed
*/
public function add($key, $value, $ttl=-){
if(empty($key)){
return null;
} if(empty($this->_yac)){
return null;
} if($ttl< || $ttl>self::$_ttlMaxTime){
$ttl = self::$_ttlMaxTime;
} return $this->_yac->add($key, $value, $ttl);
} /**
* set value
* @param mixed $keys
* @param mixed $value
* @param int $ttl
* @return mixed
*/
public function set($key, $value, $ttl=-){
if(empty($key)){
return null;
} if(empty($this->_yac)){
return null;
} if($ttl< || $ttl>self::$_ttlMaxTime){
$ttl = self::$_ttlMaxTime;
} return $this->_yac->set($key, $value, $ttl);
} /**
* get value
* @param mixed $keys
* @return mixed
*/
public function get($key){
if(empty($key)){
return null;
} if(empty($this->_yac)){
return null;
} return $this->_yac->get($key);
} /**
* delete key
* @param mixed $keys
* @param int $delay
* @return mixed
*/
public function delete($key, $delay=){
if(empty($key)){
return null;
} if(empty($this->_yac)){
return null;
} return $this->_yac->delete($key, $delay);
} /**
* flush shm
* @param void
* @return mixed
*/
public function flush(){ if(empty($this->_yac)){
return null;
} return $this->_yac->flush();
} /**
* get shm info
* @param void
* @return mixed
*/
public function info(){ if(empty($this->_yac)){
return null;
} return $this->_yac->info();
} }
PHP共享内存yac操作类的更多相关文章
- VC++ 共享内存读写操作
此解决方案含两个工程文件,一个是写操作工程文件,即把任意字符串写入创建的共享内存里,另外一个读操作工程文件,则是读取共享内存里的数据,从而实现了进程之间的共享内存读写操作. 源码下载
- php操作共享内存shmop类及简单使用测试(代码)
SimpleSHM 是一个较小的抽象层,用于使用 PHP 操作共享内存,支持以一种面向对象的方式轻松操作内存段.在编写使用共享内存进行存储的小型应用程序时,这个库可帮助创建非常简洁的代码.可以使用 3 ...
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6664554 在上一文章Android系统匿名共 ...
- Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6939890 在Android系统中,针对移动设 ...
- Boost:shared_memory_object --- 共享内存
什么是共享内存 共享内存是最快速的进程间通信机制.操作系统在几个进程的地址空间上映射一段内存,然后这几个进程可以在不需要调用操作系统函数的情况下在那段内存上进行读/写操作.但是,在进程读写共享内存时, ...
- Linux进程通信之System V共享内存
前面已经介绍过了POSIX共享内存区,System V共享内存区在概念上类似POSIX共享内存区,POSIX共享内存区的使用是调用shm_open创建共享内存区后调用mmap进行内存区的映射,而Sys ...
- Linux 基于IPC机制实现进程间的共享内存处理
今天学习了相关于IPC(InterProcess Communication ,进程间通信)的相关知识.就做个笔记,一来让大家检查一下我的理解方面是不是有错误,二来也为了能让更多的博友们了解到相关的知 ...
- 五十、进程间通信——System V IPC 之共享内存
50.1 共享内存 50.1.1 共享内存的概念 共享内存区域是被多个进程共享的一部分物理内存 多个进程都可把该共享内存映射到自己的虚拟内存空间.所有用户空间的进程若要操作共享内存,都要将其映射到自己 ...
- PHP共享内存详解
前言 在PHP中有这么一族函数,他们是对UNIX的V IPC函数族的包装. 它们很少被人们用到,但是它们却很强大.巧妙的运用它们,可以让你事倍功半. 它们包括: 信号量(Semaphores) 共享内 ...
随机推荐
- pthread_detach()与pthread_join的区别?
简单来说: pthread_detach()即主线程与子线程分离,子线程结束后,资源自动回收.pthread_join()即是子线程合入主线程,主线程阻塞等待子线程结束,然后回收子线程资源. [转]在 ...
- js上课笔记
Html 结构化CSS 样式JavaScript 行为交互01.JavaScript基础02.JavaScript操作BOM对象03.JavaScript操作DOM对象 *****04.JavaScr ...
- 三类设计模式UML图
http://design-patterns.readthedocs.org/zh_CN/latest/index.html
- java_基础_abstract抽象关键字
java中,当父类中的某些东西不确定时,可以用abstract关键字将此类变成抽象类(也就是说类并不完整,有些东西要等待子类去实现) 注意事项: 1.抽象类中的抽象方法不能有实体,格式如下 publi ...
- 《Redis 命令操作》
一:Redis 的启动与关闭 - 关闭指定端口的 Redis - redis-cli -p 9200 shutdown - 开启 Redis - redis-server redis.config 二 ...
- numpy(五)
排序: x=np.array([2,5,6,2,3,5]) np.sort(x) 不改变原数组 x.sort() 改变原数组 i=np.argsort(x) 返回排序好的索引值 x[i] 使用花哨索 ...
- ES6 Symbol数据类型和set-map 数据结构
Symbol数据类型 ES6新加的数据类型,提供一个独一无二的值 { let a1 = Symbol() ;let a2 = Symbol() } //声明 { let a3 = Symbol.for ...
- MySql 外键重名问题
在使用mysql workbench 来设计数据库模型时可能一不注意就会出现外键约束重名的情况,并在执行sql语句是会报这样的错误: Error 1022 - Can't write; duplica ...
- Charles 的界面详解
后续补充.......... 一.主导航栏 1.File.Edit.View.Proxy.Tools.Window.Help 2.View栏 (1)structure视图是将网络请求按访问的域名分类: ...
- Scala中foldLeft的总结
源码分析 def seq: TraversableOnce[A] 上面两段代码是scala.collection.TraversableOnce特质的foldLeft方法源代码,实现了Traversa ...