Out of memory

21 июня 2010, 11:12
Зарегистрирован: 26 апреля 2010, 01:51
При импорте больших SQL-файлов для DLE (300-800 мегайбат) вылетает ошибка "out of memory".

На компе 4Gb оперативной памяти.



21 июня 2010, 12:29
Зарегистрирован: 10 апреля 2012, 00:00
С этим я ничего не смогу поделать, извините, но дело не в оперативке. Это очень большие размеры для парсера sql файлов в Зеброиде.



21 июня 2010, 17:30
Зарегистрирован: 26 апреля 2010, 01:51
Не очень понятно а в чем проблема?

Я не знаю на каком языке написан Зеброид, но обычно же есть возможность организации виртуальной памяти неограниченного размера.

Даже в старых версиях Си были стандартные библиотеки для этого.



22 июня 2010, 03:24
Зарегистрирован: 10 апреля 2012, 00:00
Для парсинга SQL-файлов используется сторонняя библиотека регулярных выражений. Для неё очень проблематично разбирать файлы таких размеров.

Я могу от неё отказаться и использовать, к примеру, построчное считывание файла, но вы представляете какая скорость будет у такого метода?



22 июня 2010, 09:52
Зарегистрирован: 26 апреля 2010, 01:51
А зачем построчно?

Можно же грузить кусками, например, по 200 мегабайт.

Как вариант сначала считать размер файла, если он слишком большой порезать его перед обработкой на куски.

Если нельзя переделать программу, то как можно обойти ограничение на размер файла?

Например, можно только конкретные таблицы оставить в SQL оставить?

Если да, то какие для DLE?



22 июня 2010, 11:35
Зарегистрирован: 10 апреля 2012, 00:00
Можно же грузить кусками, например, по 200 мегабайт.


Не факт, что линия разреза не будет попадать на нужную таблицу, файл должен в любом случае оставатся валидным. Если бы всё так просто было, вы бы сами могли порезать нужные файлы.

Если нельзя переделать программу, то как можно обойти ограничение на размер файла?


Есть способ, нужно правильно разрезать импортируемые таблицы, но это немного долго и необходимо иметь знания в этой области.

Например, можно только конкретные таблицы оставить в SQL оставить?


Можно оставить только конкретные, правда по в 95% случаев именно нужные таблицы дают столь большой вес файла.

Если да, то какие для DLE?


dle_category и dle_post



23 июня 2010, 19:38
Зарегистрирован: 26 апреля 2010, 01:51
Видел какую-то утилиту для разрезания SQL-файлов, ее можно запускать как внешнюю.



06 сентября 2013, 03:01
Зарегистрирован: 20 мая 2011, 13:05
У меня та же ошибка, вот только проект я сделал, 150 записей. Сохранил зеброид. Когда открывал заново проект, выдает вот эту же ошибку, что нету памяти. Но блин, 150 статей по 3000 знаков! Как такое может быть. Могу скинуть свой проект

06 сентября 2013, 03:07
Зарегистрирован: 10 апреля 2012, 00:00
Скиньте мне свой проект на почту. Дело скорее всего в чем то другом.