将PHPExcel $ objPHPExcel对象保存到$ _SESSION中会导致错误

我有一个Excel文件(大约5000到8000行和32列),将用表中的值编辑。 我已经成功完成了这一点,但我想减less脚本的平均运行时间。

所以我试着将加载的对象保存到会话中,并检查每次脚本运行时是否存在,而不是每次都重新加载。

if (!isset($_SESSION['col10Read'])) { global $sheet; $objPHPExcel = $objReader->load($inputFileName); $_SESSION['col10Read'] = $objPHPExcel; $sheet = $objPHPExcel->getActiveSheet(); } else { global $sheet; $sheet = $_SESSION['col10Read']->getActiveSheet(); } 

但是当我第一次运行代码(当我的会话variables存在),我得到这个错误:

致命错误 :未被捕获的exception'PHPExcel_Exception'与消息'您请求的工作表索引:0是越界。 实际页数是0。

我现在一直在尝试差异化的方式,无休止地searchGoogle,任何帮助都会被忽略。

$_SESSION通过序列化传递给它的任何对象来工作。 并不是所有的类都被devise为序列化的,看起来像你正在存储的对象的types就是其中之一。 解决这些问题最简单的方法是存储足够的信息来恢复对象的状态,而无需存储对象本身:例如,可以存储文件名和所在行。 我认识到这可能是你想要避免的,但是不幸的是,你使用的框架并不是为了你要实现的优化而devise的。