我使用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
2条答案
按热度按时间dojqjjoe1#
这个问题是来自允许的内存值APCu被超过php.ini > apcu >请更改“apc.shm_size”的值示例:
iq3niunx2#
我用两个因素来解决这个问题:
memory_limit
(php.ini).此值必须根据您的要求进行设置maxmemory
(redis.conf)。如果这个值太小,那么phpspreadsheet将不再为进程存储数据,结果显示消息“* 单元格条目A1不再存在于缓存中 *”。