Mam problem z alokacją danych w pamięci. Jestem w trakcie pisania skryptu do otwierania plików Matlaba *.mat i wyskakuje mi błąd:
Kod
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 24 bytes) in D:\Program Files (x86)\Zend\Apache2\htdocs\homepage\mat2.php on line 146
Zupełnie nie widzę błędu w skrypcie w tym miejscu, ale na wszelki wypadek dodam także kod:
<?php
/**
* @author ShInUeXx
* @copyright 2011
* @category MAT-file decrypter
*/
if(!function_exists("str2array")){
function str2array($str){
for($x=0;$x<$l;$x++)
$return[]=$str[$x];
return $return;
}
}
/****************************************************/
if(!function_exists("array2str")){
function array2str($array){
$ret='';
foreach($array as $v)
$ret.=$v;
return $ret;
}
}
/****************************************************/
// Definiowanie typów Matlab
/****************************************************/
1=>"MI_INT8",
2=>"MI_UINT8",
3=>"MI_INT16",
4=>"MI_UINT16",
5=>"MI_INT32",
6=>"MI_UINT32",
7=>"MI_SINGLE",
9=>"MI_DOUBLE",
12=>"MI_INT64",
13=>"MI_UINT64",
14=>"MI_MATRIX",
15=>"MI_COMPRESSED",
16=>"MI_UTF8",
17=>"MI_UTF16",
18=>"MI_UTF32"
);
foreach($mdt as $k=>$v)
///////////////////////////////////////////////////////
"null",
array("id"=>1,"symbol"=>"miINT8","type"=>"8 bit, signed"), array("id"=>2,"symbol"=>"miUINT8","type"=>"8 bit, unsigned"), array("id"=>3,"symbol"=>"miINT16","type"=>"16-bit, signed"), array("id"=>4,"symbol"=>"miUINT16","type"=>"16-bit, unsigned"), array("id"=>5,"symbol"=>"miINT32","type"=>"32-bit, signed"), array("id"=>6,"symbol"=>"miUINT32","type"=>"32-bit, unsigned"), array("id"=>7,"symbol"=>"miSINGLE","type"=>"IEEE 754 single format"), array("id"=>8,"symbol"=>"--","type"=>"Reserved"), array("id"=>9,"symbol"=>"miDOUBLE","type"=>"IEEE 754 double format"), array("id"=>10,"symbol"=>"--","type"=>"Reserved"), array("id"=>11,"symbol"=>"--","type"=>"Reserved"), array("id"=>12,"symbol"=>"miINT64","type"=>"64-bit, signed"), array("id"=>13,"symbol"=>"miUINT64","type"=>"64-bit, unsigned"), array("id"=>14,"symbol"=>"miMATRIX","type"=>"MATLAB array"), array("id"=>15,"symbol"=>"miCOMPRESSED","type"=>"Compressed Data"), array("id"=>16,"symbol"=>"miUTF8","type"=>"Unicode UTF-8 Encoded Character Data"), array("id"=>17,"symbol"=>"miUTF16","type"=>"Unicode UTF-16 Encoded Character Data"), array("id"=>18,"symbol"=>"miUTF32","type"=>"Unicode UTF-32 Encoded Character Data") );
////////////////////////////////////////////////////////
function var_analyzer(&$data){
switch($data['type']['id']){
case MI_INT8:
break;
case MI_UINT8:
break;
case MI_INT16:
break;
case MI_UINT16:
break;
case MI_INT32:
break;
case MI_UINT32:
break;
case MI_SINGLE:
break;
case MI_DOUBLE:
break;
case MI_INT64:
$dat=str2array($data['data']);
$d='';
foreach($dat as $v){
}
$data['decrypted']=bcadd
(base_convert($d,2,10),bcmul
(-1,"18446744073709552056")); break;
case MI_UINT64:
$dat=str2array($data['data']);
$d='';
foreach($dat as $v){
}
break;
case MI_MATRIX:
break;
case MI_COMPRESSED:
$data['decompression']=gzuncompress($data['data']);
$data['decrypted']=var_reader($data['decompression']);
var_analyzer($data['decrypted']);
break;
case MI_UTF8:
$data['decrypted']=$data['data'];
break;
case MI_UTF16:
$data['decrypted']=iconv("UTF-16","UTF-8",$data['data']);
break;
case MI_UTF32:
$data['decrypted']=iconv("UTF-32","UTF-8",$data['data']);
break;
default:
break;
}
}
////////////////////////////////////////////////////////
function var_reader($str){
if($tmp!=0){
$data['type']=$matlab_data_type[$tmp];
$data['sdf']=true;
$data['data']=substr($str,4
,$data['size']); }
else {
$data['sdf']=false;
$data['data']=substr($str,8
,$data['size']); }
return $data;
}
////////////////////////////////////////////////////////
function mat_header($str){
$header['desc']=substr($str,0
,116
); $sdo=str2array($sdo);
foreach($sdo as $v)
$header['subsys_data_offset']="0x".array2str($tmp);
$header['endian_indicator']=substr($str,126
,2
); return $header;
}
////////////////////////////////////////////////////////
$mat['header']=mat_header($header);
for($x=0;strlen($vars)>0;$x++){
$data=var_reader($vars);
$mat['datas'][$x]=$data;
}
?>
Dlaczego ten błąd mi się pojawia, oraz jak mogę go rozwiązać(IMG:
style_emoticons/default/questionmark.gif)