我正在使用PHPExcel(在这里找到:https://github.com/PHPOffice/PHPExcel)。如果我尝试读取超过大约2000行,然后它显示内存错误如下。
致命错误:第89行的/home/sample/PHPExcelReader/Classes/PHPExcel/sheetwork.php中允许的134217728字节内存已耗尽(尝试分配71字节)
我的Excel数据范围是A1:X2000
下面是我用来读取excel的代码。
ini_set('memory_limit', '-1');
/** Include path **/
set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/');
/** PHPExcel_IOFactory */
include $unsecured_param['home_dir'].'APIs/PHPExcelReader/Classes/PHPExcel/IOFactory.php';
$inputFileName = $target; // File to read
//echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory to identify the format<br />';
try {
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
} catch(Exception $e) {
die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$sheetData = $objPHPExcel->getActiveSheet()->rangeToArray('A1:X2000', null, true, true, true)
//store data into array..
$i=0;$j=0;$max_rows=0;$max_columns=0;
foreach($sheetData as $rec)
{
foreach($rec as $part)
{//echo "items[$j][$i]=" ; echo $part;echo "<br>";
$items[$j][$i]=$part; $i=$i+1;
if($j==0) {$max_columns=$i;}
}
$j=$j+1;$i=0;
}
$max_rows=$j;
有人能告诉我如何克服这个问题吗?
此错误表示您正在运行的PHP文件超出了服务器上PHP允许的内存大小。您可以编辑PHP.ini文件,以允许PHP文件在运行时在内存中分配更多空间,这可能有助于做到这一点,但同时,如果出于任何原因在服务器上运行32位Linux操作html" target="_blank">系统,进程可能会占用3.5GB的硬容量,因此即使分配的空间比这还要多,它仍然会失败,因此会导致类似的问题。
在这种情况下,实际上是因为您试图提取的数据量太大,需要以某种方式将其缩小。这不一定是代码的问题,而是实际要显示/处理多少数据。
使用谷歌,我设法发现你的记录(134217728字节)的内存量与PHP. ini用于memory_limit的128MB默认值相匹配。本机更改ini中的值将解决此问题。如果无法做到这一点,那么您需要以某种方式限制一次拉入的数据量。
资料:http://ca1.php.net/manual/en/ini.core.php#ini.memory-极限
考虑使用单元格缓存来减少在内存中保存工作簿所需的内存,如开发人员文档的4.2.1节中所述。
考虑不要使用toArray(),然后使用它在内存中构建另一个数组......这样做实际上是使用大量内存来保存重复的数据,而你可以简单地循环工作表的行和列来做你需要的事情
我有一个PHP的问题,我只是想尝试调用方法 我得到错误: 致命错误:允许的内存大小为134217728字节耗尽(试图分配1字节)在C:\xampp\htdocs\aa-acc\包括\Produk_Method.php在第13行 我尝试过这个答案:在php中允许内存大小为33554432字节(尝试分配43148176字节) 我仍然得到这个错误: 致命错误:内存不足(分配1881931776)(尝试分
当我尝试在wordpress脚本中打开一个仪表板页面时出错 错误消息如下所示: 致命错误:第2685行的/home/admin/domains/filesick.com/public_html/wp-includes/taxonomy.php中允许的内存大小为268435456字节(尝试分配71字节) 我四处询问,他们告诉我必须将内存限制提高到256M以上,所以我将其改为512M,但仍然存在同样的
可能重复: php中允许的内存大小为33554432字节(尝试分配43148176字节) 我在执行代码时遇到以下错误。 尝试了
我在PHP中使用重载,我的PHP代码有什么问题,即使只有8行代码: 上面写着: “致命错误:允许的内存大小134217728字节已用尽(试图分配262144字节)”
我做了一个函数会返回序号的第N位,例如: 1234567891011121314151617 第五位是5 当我执行该命令时,我遇到了如下错误消息“致命错误:允许的内存大小134217728字节已用尽(尝试分配36字节)”。可能是因为我在var 我怎样才能解决这个问题…或者我怎样才能生成一个函数来处理这些大的数 谢谢
以下是完整的错误: 致命错误:允许内存大小为134217728字节耗尽(尝试分配131072字节) /sites/apps/seller/www/application/libraries/Excel/PHPExcel/CachedObjectStorage/CacheBase.php行173 这是mu代码: 我使用codeigniter框架和phpexcel库。非常感谢。