notice: iconv_strlen() [function.iconv-strlen]: detected an illegal character in input string in e:\test\phpnow-1.5.6\vhosts\127.0.0.18\inc\phpexcel\phpexcel\shared\string.php on line 554
fatal error: allowed memory size of 134217728 bytes exhausted (tried to allocate 16 bytes) in e:\test\phpnow-1.5.6\vhosts\127.0.0.18\inc\phpexcel\phpexcel\cell.php on line 840
本地调试的时候出现的,请问该怎么解决呢? phpexcel默认导出的编码是什么呢?数据库的编码是gbk的。
源代码有500多行(菜鸟phper)就不贴了。
针对第二个问题在网上找了下,加了这两句还是没用
set_time_limit(900);
//设置最大内存为128m
@ini_set('memory_limit','128m');
在这里先谢谢大家了
回复讨论(解决方案) 1:
mb_convert_encoding($html,'utf8','big5'); //?big5utf8
或iconv(gb2312,utf-8,$要转的string);
2:
你的?存不足,需要修改php.ini中允?使用的?存量,改完重?apache
1:
mb_convert_encoding($html,'utf8','big5'); //?big5utf8
或iconv(gb2312,utf-8,$要转的string);
2:
你的?存不足,需要修改php.ini中允?使用的?存量,改完重?apache
你好,第一个问题解决了
但第二问题依然还在,我在测试的时候用了@ini_set('memory_limit', '-1');还是出现
fatal error: out of memory (allocated 1602748416) (tried to allocate 134217728 bytes) in e:\test\phpnow-1.5.6\vhosts\127.0.0.18\inc\phpexcel\phpexcel\cell.php on line 839
但是我本地的内存已经用满了,虾米那是我的代码
setoffice2003compatibility(true);//设置文档基本属性$objprops = $objexcel->getproperties();$objprops->setcreator(tao hu);$objprops->setlastmodifiedby(ddd);$objprops->settitle(iconv('gbk', 'utf-8', '所选时间内的工作量详情'));$objprops->setsubject(dd);$objprops->setdescription(ss);$objprops->setkeywords(s);$objprops->setcategory(ss);//设置当前的sheet索引,用于后续的内容操作。//一般只有在使用多个sheet的时候才需要显示调用。//缺省情况下,phpexcel会自动创建第一个sheet被设置sheetindex=0$objexcel->setactivesheetindex(0);$objactsheet = $objexcel->getactivesheet();//设置当前活动sheet的名称$objactsheet->settitle('ddd');$cachemethod = phpexcel_cachedobjectstoragefactory:: cache_to_phptemp; $cachesettings = array( ' memorycachesize ' => '8mb' ); phpexcel_settings::setcachestoragemethod($cachemethod, $cachesettings); //合并单元格$i=1;//行号$j='a';//列号 //合并单元格 $objactsheet->mergecells('a'.$i.':l'.$i); $objactsheet->setcellvalue('a'.$i, '理论课工作量'); $i++; //各项标题 $objactsheet->setcellvalue('a'.$i, '工作量编号'); $objactsheet->setcellvalue('b'.$i, '学期'); $objactsheet->setcellvalue('c'.$i, '课程名称'); $objactsheet->setcellvalue('d'.$i, '教师名称'); $objactsheet->setcellvalue('e'.$i, 'k1'); $objactsheet->setcellvalue('f'.$i, 'k2'); $objactsheet->setcellvalue('g'.$i, 'k3'); $objactsheet->setcellvalue('h'.$i, '学生数'); $objactsheet->setcellvalue('i'.$i, 'we'); $objactsheet->setcellvalue('j'.$i, 'we'); $objactsheet->setcellvalue('k'.$i, 'fds'); $objactsheet->setcellvalue('l'.$i, 'fwe'); $i++; $objactsheet->setcellvalue('a'.$i, dfd); $objactsheet->setcellvalue('b'.$i, dfd); $objactsheet->setcellvalue('c'.$i, dfd); $objactsheet->setcellvalue('d'.$i, dfd); $objactsheet->setcellvalue('e'.$i, dfd); $objactsheet->setcellvalue('f'.$i, dfd); $objactsheet->setcellvalue('g'.$i, dfd); $objactsheet->setcellvalue('h'.$i, dfd); $objactsheet->setcellvalue('i'.$i, dfd); $objactsheet->setcellvalue('j'.$i, dfd); $objactsheet->setcellvalue('k'.$i, $has_exam); $objactsheet->setcellvalue('l'.$i, $sum_thoery); $i++;//输出内容$outputfilename = output.xls;$objwriter->save($outputfilename); ?>
第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置memory_limit = 12m(推荐使用,如果拥有这个权限的话)
?在sites/default/settings.php文件里设置ini_set('memory_limit','12m');
解决办法二:
// 设置缓存方式,减少对内存的占用
$cachemethod = phpexcel_cachedobjectstoragefactory::cache_to_phptemp;
$cachesettings = array (
'cachetime' => 300
);
phpexcel_settings::setcachestoragemethod ( $cachemethod, $cachesettings );
第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置memory_limit = 12m(推荐使用,如果拥有这个权限的话)
?在sites/default/settings.php文件里设置ini_set('memory_limit','12m');
解决办法二:
// 设置缓存方式,减少对内存的……
已经设置为1024m了还是提示这个错误
而且使用的时候电脑内存占用超高,直接卡机
很正常,尝试输出页面占用内存情况,你就会懂得 echo memory_get_usage ();
在我本机,load一个5mb左右的excel文件,消耗了188 mb内容,而且页面用了二十秒。
http://bbs.csdn.net/topics/390312724
引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置memory_limit = 12m(推荐使用,如果拥有这个权限的话)
?在sites/default/settings.php文件里设置ini_set('memory_limit','12m');
…… 更改php.ini内存限制之后,要重启apache
引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置memory_limit = 12m(推荐使用,如果拥有这个权限的话)
?在sites/default/settings.php文件里设置ini_set('memo……
都重启了
加上之后出现
589704
fatal error: allowed memory size of 536870912 bytes exhausted (tried to allocate 35 bytes) in e:\test\phpnow-1.5.6\vhosts\127.0.0.18\inc\phpexcel\phpexcel\cell.php on line 839
引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置memory_limit = 12m(推荐使用,如果拥有这个权限的话)
?在sites/default/setti…… ?是不?用,加大
好像里面有一个设置编码的吧,我用的时候就是把编码设置成utf-8就可以了
phpexcel大数据量情况下内存溢出解决
引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置memory_limit = 12m(推荐使用,如果拥有这个权限的话)
?在s……
加到2g还是不行
有没有轻量级的呢? 我需要3个循环的 这才一个循环就这样了 到时候没那么给力的机器装。。。设置了缓存也不行。。。而且速度太慢了
phpexcel大数据量情况下内存溢出解决
使用了方法依然解决不了
引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置memory_limit = 12m(推荐使…… 把你的php代?循?方式修改成url循环方式,示例:
$i=(!isset($_get['i'])) ? 0 : $_get['i'];
....
select * from 表 where id>{$i} order by id asc limit 0,1
....
header('location:?i='.$i);
引用 11 楼 hu5487 的回复:引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置mem……
研究了半天问题终于解决了,是我的代码的问题,有几个格式用错了,比如 $objactsheet->mergecells('a'.$i.':l'.$i);错了导致根本过不去
引用 13 楼 sibang 的回复:引用 11 楼 hu5487 的回复:引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制…… 恭喜,?
引用 11 楼 hu5487 的回复:引用 8 楼 sibang 的回复:引用 7 楼 hu5487 的回复:引用 6 楼 wodecuoshi230 的回复:引用 4 楼 hu5487 的回复:引用 3 楼 wodecuoshi230 的回复:第二个问题: 内存超出
解决办法一:
可以通过以下两个方法修改php运行时的内存限制.
在php.ini文件里设置mem……
研究了半天问题终于解决了,是我的代码的问题,有几个格式用错了,比如 $objactsheet->mergecells('a'.$i.':l'.$i);错了导致根本过不去
弱弱的问一句,正确的表示方法是?