Проблема переполнения памяти при работе с wp_insert_post()
Рассмотрим случай, когда остановка объектного кэширование решает проблему переполнения памяти, а такое при импорте данных в WP встречается очень часто.
Допустим, мы импортируем большой массив данных в WordPress. К примеру, нам нужно заполнить таблицу записей из другой базы данных, или CSV файла, или по API. Для этого у нас есть код, в котором мы используем функцию добавления записей wp_insert_post() или wp_update_post(). Эти функции после добавления записи в БД, добавляет данные в кэш, чтобы потом получить их без дополнительного запроса. Но нам не нужно кэширование при импорте, потому что по умолчанию кэш записывается в оперативную память и в результате импорта её может не хватить.
Поэтому, чтобы импорт работал как нужно, нужно выключить кэш до импорта и включим его после:
// запомним текущее состояние (это пример, что так тоже можно делать) $was_suspended = wp_suspend_cache_addition(); // отключаем кэширование wp_suspend_cache_addition( true ); // ТУТ ВАШ КОД ИМПОРТА. Объектное кэширование здесь уже не работает // вернем прежнее состояние кэша обратно wp_suspend_cache_addition( $was_suspended );
Ссылки по теме:
—