php excel 单元格类型,设置20个单元格类型后,phpexcel停止工作 -ag凯发k8国际
phpexcel分配了相当多的内存
虽然phpexcel是一个漂亮的库,但使用它可能需要为php分配大量内存.
根据this thread,只有5个单元可以渲染6 mb的内存使用量:
require_once 'php/phpexcelsvn/phpexcel/iofactory.php';
$objphpexcel = phpexcel_iofactory::load("php/tinytest.xlsx");
$objphpexcel->setactivesheetindex(0);
$objphpexcel->getactivesheet()->setcellvalue('d2',50);
echo $objphpexcel->getactivesheet()->getcell('d8')->getcalculatedvalue() . "
";
echo date('h:i:s') . " peak memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " mb\r\n";
?>
i get 6mb of memory usage.
虽然phpexcel提供了减少内存占用的方法,但在我的情况下,所有减少都变得太小了. this page on github提供了phpexcel缓存管理选项的详细信息.例如,此设置序列化和gzips工作表的单元格结构:
$cachemethod = phpexcel_cachedobjectstoragefactory::cache_in_memory_gzip;
phpexcel_settings::setcachestoragemethod($cachemethod);
fatal error: allowed memory size of xxx bytes exhausted (tried to
allocate yyy bytes) in zzz on line aaa
phpexcel holds an “in memory” representation of a spreadsheet,so it
is susceptible to php’s memory limitations. the memory made available
to php can be increased by editing the value of the memorylimit
directive in your php.ini file,or by using iniset(‘memory_limit’,
‘128m’) within your code (isp permitting);
some readers and writers are faster than others,and they also use
differing amounts of memory. you can find some indication of the
relative performance and memory usage for the different readers and
writers,over the different versions of phpexcel,here
07004
if you’ve already increased memory to a maximum,or can’t change your
memory limit,then this discussion on the board describes some of the
methods that can be applied to reduce the memory usage of your scripts
using phpexcel
07005
php excel的测量结果
我检测了phpexcel示例文件[01simple.php] [5]并做了一些快速测试.
消耗92 kbyte:
for( $n=0; $n<200; $n ) {
$objphpexcel->setactivesheetindex(0) ->setcellvalue('a' . $n,'miscellaneous glyphs');
}
消耗4164 kb:
for( $n=0; $n<200; $n ) {
$objphpexcel->setactivesheetindex(0) ->setcellvalue('a' . $n,'miscellaneous glyphs');
$objphpexcel->getactivesheet()->getstyle('a' . $n)->getalignment()->setwraptext(true);
}
如果多次执行此片段不变,则每个片段消耗大约4 mb.
检查您的应用在逻辑上是正确的
为确保您的应用程序在逻辑上正确,我建议首先增加php内存:
ini_set('memory_limit','32m');
在我的情况下,我必须导出到在线评估应用程序的导出结果数据.虽然水平方向的单元格少于100个,但我需要导出多达10,000个行.虽然单元格的数量很大,但我的每个单元格都包含3个字符的数字或字符串 – 没有公式,没有样式.
如果存在强大的内存限制或大型电子表格
在我的例子中,没有一个缓存选项减少了所需的数量.此外,应用程序的运行时间也大大增加.
最后我不得不切换到老式的csv数据文件导出.
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是ag凯发k8国际为你收集整理的php excel 单元格类型,设置20个单元格类型后,phpexcel停止工作的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: