【问题标题】:php cache zend frameworkphp缓存zend框架
【发布时间】:2010-05-24 03:43:15
【问题描述】:

服务器端是 PHP + zend 框架。

问题:

我有大约 5000 条记录的大量数据,并且 input.txt 文件中的列数为 5。 我喜欢只将所有数据读入内存一次并将一些数据发送到每个浏览器请求。 但是如果我更新那个 input.txt 文件,那么更新的数据必须自动同步到那个 内存位置。

所以我需要通过使用内存缓存技术来解决这个问题。但是缓存技术 有过期时间。但是如果在缓存过期之前更新了 input.txt,那么我需要自动同步到该内存位置。

现在我正在使用 zend 框架 1.10。是否可以在 zend 框架中使用。 谁能给我一些zendfrmawork的代码

我没有选择使用 memchached 服务器(分布式)。

仅 zend 框架。

【问题讨论】:

  • 如果不读取整个 input.txt 并在每个请求上使用 file_get_contents 是否可以正常工作,是否可以使用 APC/eAccelerator PHP 扩展

标签: php zend-framework caching


【解决方案1】:

使用 zend 框架可以缓存类似的东西。 在线查看 Zend 文档 - 它不完整,但可以让您抢先一步: http://framework.zend.com/manual/en/zend.cache.introduction.html

【讨论】:

    【解决方案2】:

    像这样使用延迟加载(1h 缓存通常是可以的)。

    function getData() {
        $cache = ...; //get your memory cache here
        $cacheId = 'MyCacheId'; //cache id for your data
        $loadTimeCacheId = 'dataLoadCacheId'; //cache id for data load timestamp
        $cacheLength = 3600; //seconds
    
        $data = $cache->load($cacheId);
        $loadTime = (int) $cache->load($loadTimeCacheId);
    
        if (!$data || filemtime('/path/to/your/file') > $loadTime) {
            $data = ...; //real loading here
    
            $cache->save($data, $cacheId, array(/*no tags*/), $cacheLength); //save data to cache
            $cache->save(time(), $loadTimeCacheId, array(/*no tags*/), $cacheLength); //save load timestamp
        }
    
        return $data;
    }
    

    【讨论】:

      【解决方案3】:

      最好的选择是使用 Zend_Cache_Frontend_File 指向你的文件和 Zend_Cache_Backend_Memcached。除了 Memcache 或 APC 之外,几乎没有其他选择可以在内存中存储任何内容。如果没有外部扩展 IMO,它就无法完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-20
        • 2010-11-16
        相关资源
        最近更新 更多