【问题标题】:Setting a flag in cache memory using zend_registry使用 zend_registry 在缓存中设置标志
【发布时间】:2012-09-06 19:03:12
【问题描述】:

假设我有一个这样的 Php 函数:

private function verification($isXLSFile = false) {

    if ($isXLSFile) {
        $this->parseXLSFile();
    }else {
        $parsedCSVArr = $this->getCSVarr();
        Zend_Registry::get('VMMS_ZEND_CACHE')->save($parsedCSVArr, $this->getXLSCacheName());
        Zend_Registry::get('VMMS_ZEND_CACHE')->save($isXLSFile, $this->getXLSCacheName());
    }
}

然后我调用另一个函数来检查缓存,如下所示:

private function process(){
    Logger::info("EnterDataMassUpload - Start Process...");
    if (($parsedCSVArr = Zend_Registry::get('VMMS_ZEND_CACHE')->load($this->getXLSCacheName())) === false) {
        $this->verification();
        return;
    }
    //if XLS file it reads the lines for each sheet.
    if ($isXLSFile == true) {
        $i=0;
        //make sure there's no duplicated row
        $parsedCSVArr = array_unique($parsedCSVArr, SORT_REGULAR);
        foreach($parsedCSVArr as $sheetIndex=>$arr){
            foreach ($arr as $k=>$line) {
                $this->processLine($line, $k);
                $i++;
            }
        }
    } else { //for a CSV file
        foreach($parsedCSVArr as $k=>$line){
            $this->processLine($line, $k);
        }
    }
    // ...

如您所见,我试图将 2 个变量保存在同一个位置,以便在函数 process() 中读取它。 你知道为什么我的标志不起作用吗?我的意思是..我可以在同一个地方保存两个变量吗:

 Zend_Registry::get('VMMS_ZEND_CACHE')->save($parsedCSVArr, $this->getXLSCacheName());
 Zend_Registry::get('VMMS_ZEND_CACHE')->save($isXLSFile, $this->getXLSCacheName());

【问题讨论】:

  • 不行,每个键都必须是唯一的,就像变量一样,否则你会覆盖旧的,尝试保存一个变量数组
  • 感谢@max4ever!这是我正在寻找的信息。

标签: php zend-framework zend-cache


【解决方案1】:

为什么不用两个不同的名字保存它呢?

否则,您可以使用序列化将两个变量保存在相同的名称下。

Zend_Registry::get('VMMS_ZEND_CACHE')->save(serialize(array('parsedCSVArr' => $parsedCSVArr, 'isXLSFile' => $isXLSFile)), $this->getXLSCacheName());

然后,在处理函数中获取缓存结果:

$cacheResult['parsedCSVArray'];
$cacheResult['isXLSFile'];

【讨论】:

  • 我要把它们放在两个不同的名字下,就像你说的那样!但这也是一个好主意.. upvote
猜你喜欢
  • 1970-01-01
  • 2012-05-18
  • 2011-10-17
  • 2010-12-27
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多