具体的意思是就,有一个数据比较大,而且所有的访问都要用到它,我想把它在内存中只拷贝一份,而PHP又不能定义静态类,供所有的访问调用,我现在用thinkphp做项目!请问应该怎么实现?

解决方案 »

  1.   

    是不是可以把这个数据放到MySQL中,然后启用查询缓存,牺牲一定数量的内存来降低磁盘I/O操作。只是一个想法,没有实际尝试过。
      

  2.   

    或者把数据文件放到内存盘(ramdisk(Windows)、内存文件系统ramfs(Linux))。。不过。。真的有这个必要吗?磁盘I/O已经到极限了?
      

  3.   

    //1、使用系统内存方式实现<?php
    //a.php
    $shm_id = shmop_open(4, "n", 0644, 100);//创建方式打开内存存储区
    $a = shmop_write($shm_id,"abc",0);//写入数据
    $b = shmop_read($shm_id,0,3);//读取数据
    echo $b;
    ?><?php
    //b.php
    $shm_id = shmop_open(4, "w",0,0);//读写方式打开内存存储区
    $b = shmop_read($shm_id,0,3);//读取数据
    echo $b;
    ?>//2、使用nosql实现<?php
    $s=new memcached('127.0.0.1');
    $s->set('mykey','myval');
    ?><?php
    $s=new memcached('127.0.0.1');
    $v=$s->get('mykey');
    ?>