php 缓存中不再存在单元格条目A1

rxztt3cl  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(108)

我使用PhpOffice\Phpencil工作表与Apcu缓存,我有这个错误
错误:单元格条目A1在缓存中不再存在。这可能意味着该高速缓存已被其他人清除。

$pool = new \Cache\Adapter\Apcu\ApcuCachePool();
$simpleCache = new \Cache\Bridge\SimpleCache\SimpleCacheBridge($pool);

\PhpOffice\PhpSpreadsheet\Settings::setCache($simpleCache);

$objReader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load(dirname(__FILE__).'/Tmpfile'.$i.'.xlsx');

$objPHPExcel->setActiveSheetIndex(0);

foreach ( $objPHPExcel->getActiveSheet()->getRowIterator() as $row ) {
    if ( $row->getRowIndex() == 1 ){
        $row->getCellIterator();
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
        $shop_row = array();
        try {
            foreach ($cellIterator as $key => $cell) { // <<<====== WHERE I got the ERROR
                $key = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($key); ....

我没有任何解决这个问题的办法。
php版本7.1
phpOffice 1.5.2
5.1.17

dojqjjoe

dojqjjoe1#

这个问题是来自允许的内存值APCu被超过php.ini > apcu >请更改“apc.shm_size”的值示例:

apc.shm_size=1024M
iq3niunx

iq3niunx2#

我用两个因素来解决这个问题:

  • memory_limit(php.ini).此值必须根据您的要求进行设置
  • maxmemory(redis.conf)。如果这个值太小,那么phpspreadsheet将不再为进程存储数据,结果显示消息“* 单元格条目A1不再存在于缓存中 *”。

相关问题