@mekeda

Wp_insert_post() очень долго вставляет запись после 4 тысячи. Как оптимизировать?

Была ранее тема по медленной работе этой функции. Но там проблема была в генерации уникального урла. У меня все урлы уникальны, тем не менее когда в базе более 4 тыс записей, функция работает очень-очень медленно. Более 10 секунд вставляет одну запись. Если база пустая - все летает. Не пойму где ошибка.

$post_data = array(
	  'post_title' => $c['h1'],              // - заголовок материала string
	  'post_name' => $c['url'],                // - "слаг", синоним пути. string
	  'post_excerpt' => '',               // - цитата, анонс.
	  'post_content' => $c['text'],    // - содержимое/контент. string
	  'post_status' => 'publish',                      // - статус материала: опубликованный.
	  'post_author' => 1,                              // - автор материала: пользователь с id=1 (администратор).
	  'post_type' => 'post',                           // - тип контента: запись.
	  'post_category' => $category,               // - рубрики. array
	  'comment_status' => 'closed',                       // - комментирование 
	  'ping_status' => 'closed'
	);
	$post_id = wp_insert_post( $post_data, $wp_error );
  • Вопрос задан
  • 423 просмотра
Пригласить эксперта
Ответы на вопрос 2
XXXXPro
@XXXXPro
Fullstack Web developer
Вопрос: а насколько нагружен сайт (т.е. сколько посетителей одновременно находится)? И в каком формате таблицы — MyISAM, InnoDB? Также советую выполнить OPTIMIZE TABLES и ANALYZE TABLES и посмотреть таблицы в базе на предмет подозрительно большого количества записей.
Ответ написан
Комментировать
@mekeda Автор вопроса
Сайт сейчас имеет нулевую загрузку. Находится один на обычном хостинге. Таблицы стандартные для вордпресса - MySQL.
Количество записей нормальное - это я их экспортирую из таблицы.
Подобная проблема возникала и ранее на другом хостинге, но решалась увеличением памяти ini_set("memory_limit", "512M"); Хотя все равно это плохой костыль. Этот хостинг чуть слабее.
Если удалить все записи и начать заново - все летает.

Не пойму как эта функция зависит от предыдущих записей? Ей всего-то надо сделать новую запись. Может он урл на уникальность перед записью проверяет?

Тогда почему в админке нет таких проблем? Вордпресс прекрасно добавляет записи в админке при любом количестве записей. Т .е. функция работает нормально. Что-то не то в параметрах.

Проверить процессы в базе не могу - обычный хостинг, из инструментов только phpMyAdmin.

UPDATE
Убрал из функции эти три строки, которые ничего не несли.
//'post_excerpt' => '', // - цитата, анонс.
//'comment_status' => 'closed', // - комментирование разрешить.
//'ping_status' => 'closed'
Все заработало в 20 раз быстрее.
Посмотрю, что будет при большем количестве записей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы