欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 编程语言 > php >内容正文

php

php excel 单元格类型,设置20个单元格类型后,phpexcel停止工作 -凯发k8官方网

发布时间:2024/10/8 php 33 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 php excel 单元格类型,设置20个单元格类型后,phpexcel停止工作 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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年技术见证,附赠技术全景图

总结

以上是凯发k8官方网为你收集整理的php excel 单元格类型,设置20个单元格类型后,phpexcel停止工作的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图