я строю скрипт для переноса данных из файла dbase в таблицу mysql, но с некоторыми файлами (большими) это выдает мне эту ошибку:
Неустранимая ошибка: недостаточно памяти (выделено -1678508032) (попытка выделить 64 байта) в D: \ wamp \ www \ dbf2MySql \ LeerDbase.php в строке 65
Это код
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);
}
}
Буду признателен за любую помощь, дайте мне знать, если вам нужна дополнительная информация, чтобы помочь мне решить эту проблему
РЕДАКТИРОВАНИЕ
ОБНОВИТЬ
Я использую сейчас командную строку, но я получаю эту ошибку сейчас, используя php.exe
D: \ wamp \ bin \ php \ php5.5.12> php.exe -f «D: \ wamp \ www \ dbf2MySql \ CommandScript.php» errmxite.dbf
В пользу эспере …
Неустранимая ошибка: вызов неопределенной функции dbase_open () в D: \ wamp \ www \ dbf2MySql \ Co
mmandScript.php в строке 33
Стек вызовов:
0.0007 273304 1. {main} () D: \ wamp \ www \ dbf2MySql \ CommandScript.php: 0
Вот обновленный код
РЕШЕНИЕ
Я использовал командную строку php для выполнения скриптов с некоторыми изменениями, и теперь он работает без проблем, спасибо всем
Вы можете попытаться увеличить выделенную память в вашем php.ini.
memory_limit = 1024M #or whatever size you wanna allocate to php scripts
или если вы хотите выполнить скрипт без ограничений, вы можете попробовать добавить этот код
ini_set('memory_limit', '-1');
в начале вашего файла.
Других решений пока нет …