解决方案 »

  1.   

    php是短连接,一次性加载然后读取不好做
      

  2.   

    写个方法读取csv文件内容,单例模式调用,不可行?
      

  3.   


    我使用单例模式读取的数据放到了一个static变量里面。
    但每次还是要load。
      

  4.   


    我设置了一个static的count变量,每次调用load_file的时候就打印一下。在两个不同的界面上,
    都打印
    count = 1;
      

  5.   

    <?phpclass ***
    {
        private $description;   
        private static $instance;
                   
        private function __construct()
        {
        }    public static function get_instance()
        {
            if (!(self::$instance instanceof self)){
                self::$instance = new self;
            }
            return self::$instance;
        }    private function load_file()
        {
            static $index = 0;
            // load data..
            echo "load_file: ".$index."<br>";
            $index ++;
        }    public function get_data($key)
        {
            if (empty($this->description)) {
                $this->load_file();
            }
            if (array_key_exists($key, $this->description))
                return $this->description[$key];
            return array();
        }}?>
      

  6.   

    每次都打印
    load_file: 0
      

  7.   

    $key, $this->description是否有值,有值的话,各是什么?
      

  8.   

    由于每次请求都是单独的进程,所以“普通变量”是无法共享的。可以将数据放置到可以统一访问的地方:
    1.文件中(不就是你原来的文件么。。嘻嘻,其实可以存成k v数组,不必每次读取csv文件)
    2.session中。
    3.内存中(参考memcached、redis等内存缓存的原理,kv的常用存储)
    4.数据库中。
    5.其他可共享的storage中。
    关键不在于是不是load一次。而在于load的性能。
      

  9.   


    我想了想,还是放到session中把。load是调用fgetcsv得到数据。实际上数据也就400行左右,使用的人也不多,性能还可以。如果存成k v数组的话,是放到$GLOBALS[]里面吗?因为好几个php文件都要用。