PHP致命错误dbase_get_record内存不足(已分配-1678508032)(试图分配64字节)


PHP Fatal Error ut of memory (allocated -1678508032) (tried to allocate 64 bytes) on dbase_get_record

我正在构建一个脚本,将数据从dbase文件迁移到mysql表,但对于一些文件(大文件),它会给我带来以下错误:

致命错误:第65行D:''wamp''www''dbf2MySql''LeerBase.php内存不足(已分配1678508032)(试图分配64字节)

这是代码

echo "Por favor espere...<br/>";
for ($valor = 1; $valor <= count($archivos); $valor++) {
    //echo $valor; 
    //echo $archivos[$valor]; echo "<br/>";
    $fichero_dbf = "tmp/". $archivos[$valor];
    $conex       = dbase_open($fichero_dbf, 0); //abro el archivo
    if($conex){ //si la conexión es buena, realizo la migración
        $arrData = array();
        $total_registros = dbase_numrecords($conex);
        for ($i = 1; $i <= $total_registros; $i++){
            $arrData[] = dbase_get_record($conex,$i); //<-- Here is the memory error line
        }
        // Obtener la información de columna
        $info_columna = dbase_get_header_info($conex);
        //Busco los titulos o cabeceras
        for ($i = 0; $i < count($info_columna); $i++) {
            $titulos[$i] = $info_columna[$i]['name'];
            if (in_array($info_columna[$i]['name'], $titulos)) {
                $titulos[$i] = $info_columna[$i]['name']."_".$i;
            }
        }
        //print_r($titulos); 
        //echo DibujarTabla($titulos, $arrData);
        $arreglo = explode(".", $archivos[$valor]);         
        //Paso los datos a mysql
        CrearTablaMySql($arreglo[0], $dbf2MySql, $titulos, $arrData, $database_dbf2MySql, $total_registros);
    }else{
        echo "No se pudo acceder al fichero dbf -> '" . $fichero_dbf . "'<br/>"; //Si me da un error muestro un error
    }
    dbase_close($conex); //Cierro la conexión al archivo
    if ($valor == (count($archivos))) {
        echo "FINALIZADO";
        mysqli_close($dbf2MySql);
    }
}

任何帮助都将不胜感激,如果你需要更多信息来帮助我解决这个问题,请告诉我

编辑

http://goo.gl/aHURGl

更新

我现在使用命令行,但我现在使用php.exe 得到这个错误

D: ''wamp''bin''php''php5.5.12>php.exe-f"D:''wamp''www''dbf2MySql''CommandScript.php"errmxite.dbfPor青睐特别。。。

致命错误:调用D:''wamp''www''dbf2MySql''Co中未定义的函数dbase_open()第33行的mmandScript.php

调用堆栈:0.0007 273304 1。{main}()D:''wamp''www''dbf2MySql''CommandScript.php:0

这是更新后的代码

http://goo.gl/drf6Ht

解决方案

我使用php命令行执行了一些更改后的脚本,现在它工作起来没有问题,这要归功于所有的

您可以尝试增加php.ini 中分配的内存

memory_limit = 1024M  #or whatever size you wanna allocate to php scripts 

或者,如果你想无限制地执行脚本,你可以尝试添加这个代码

ini_set('memory_limit', '-1');

在文件的开头。

相关文章: