modResource.php жрёт память MySQL

Ни кто не сталкивался?
Речь идёт о добавлении ~40тыс документов с 4мя TV.
30тыс добавились нормально, но вот после… 256Mb MySQL не хватает и выкидывает Fatal error.
Может кто ещё чем пользовался для таких нужд?

6 комментариев

avatar
ajax за несколько заходов
avatar
Покажите ошибку.
avatar
Зачем аякс? Просто грубо говоря в цикле из массива добавляются документы, всё в рамках одного скрипта.

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 130968 bytes) in /var/www/.../manager/includes/extenders/dbapi.mysqli.class.inc.php on line 249


Смотрел Resourse.php но тот с PHP 5.5 не работает из-за mysql_affected_rows. Попробую его поправить и проверю как с ним будет работать
avatar
Ну вот в рамках одного скрипта память и закончилась при определенном размере массива :). Может ему где-нибудь unset делать и по-новой частями собирать?
avatar
Обманул — по сути массива нет — парсинг это)
В массиве URLы — они не при чём.
Что выяснилось: если вызывать без сброса кеша, т.е:
$resourse->save(false,false);

Всё медленно, но всё же работает, даже с учётом
ini_set('memory_limit', '-1');

Так что пока так попробую.
А вот по Resourse.php от Bumkaka меняем это (106 строка)
$rc = mysqli_affected_rows();

на это
$rc = $this->modx->db->getAffectedRows();

и всё работает в PHP > 5.5
Но вот создаёт и этот класс нормально, но почему — то не корректо редактирует документ, у modResource.php и создание и редактирование работает корректно.
avatar
Я так и думал, что проблема в кэше. Включите aliasListing только для папок, ну и очищайте кэш, когда импорт закончен.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.