gpt4 book ai didi

php - 使用 zend_registry 在缓存内存中设置标志

转载 作者:搜寻专家 更新时间:2023-10-31 20:46:43 25 4
gpt4 key购买 nike

假设我有一个这样的 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());

最佳答案

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

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

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

然后,在process函数中获取缓存结果并:

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

关于php - 使用 zend_registry 在缓存内存中设置标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12410546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com