Intereting Posts
Невозможно изменить «Страницы:» Перед WP_LINK_PAGES Как получить содержание сообщения из категории на моей домашней странице Использование шаблона страницы без страницы Последние комментарии от каждой категории? Сохранение данных для разных пользовательских сообщений jQuery Ajax () не работает, когда страница доступна как страница шаблона WordPress Как использовать API REST для отправки пользовательских метаданных? Получение разбивки на страницы для второго цикла для работы на single.php comment_form () Не меняет класс / id по умолчанию элементов Могу ли я использовать два разных доменных имени в многопользовательской сети WordPress? Как я могу локализовать исходный код html или php из wordpress Отключить постоянные ссылки на всех страницах и сообщениях Удаление полей вложений из пользовательского загрузчика мультимедиа wp_redirect () не работает в nginx? Как изменить версию .css в WordPress?

Массовое обновление сообщений WordPress

Кодеры. Я действительно новичок в WP Code, у меня есть нулевые знания, вот и мы. Я создал плагин (фактически нашел его, но сделал некоторые изменения), который обновляет все мои сообщения wp.

Давайте покажем вам код,

if ( ! class_exists( 'MyPlugin_BulkUpdatePosts' ) ) : class MyPlugin_BulkUpdatePosts { public function __construct() { register_activation_hook( __FILE__, array( $this, 'do_post_bulk_update' ) ); //Run this code only on activation } //Put your code in this function public function do_post_bulk_update() { $posts_to_update = get_posts('numberposts=-1'); //numberposts for post query, "-1" for all posts. foreach ( $posts_to_update as $update_this_post ): //update query goes here endforeach; } } endif; 

Как вы можете видеть, он делает запрос ко всем сообщениям. Основная проблема заключается в том, что у меня есть сообщения 10k +. Но когда я использую это, мой сервер разбивается, он дает «503 Unavailable». Но когда я использую 50-60 сообщений, это работает.

Как я могу сделать эту работу за счет меньших ресурсов?

Solutions Collecting From Web of "Массовое обновление сообщений WordPress"

Одна из особенностей реализации работы WP с базой данных заключается в том, что она всегда перетаскивает все результаты запроса в значения PHP и пространство памяти. Другими словами, очень маловероятно, чтобы какой-либо серьезный запрос был применен в WP, и он не рухнул. Примечательно, что любые плагины, которые занимаются большими запросами (например, резервные копии баз данных), часто пишут свой уровень доступа к базе данных с нуля вместо использования WP API.

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

Альтернативный подход, в некоторых случаях, заключается в том, чтобы перехватить логику обновлений для доступа к отдельным сообщениям. Если гигантское одноразовое полное обновление всего не требуется, обновления могут быть распространены с течением времени таким образом, без необходимости использования кода обновления, и не беспокоиться о влиянии ресурсов.

Обновления 10k + требуют времени. В зависимости от того, что вам нужно, вы можете использовать таблицы WordPress, такие как wp_posts используя необработанные SQL-запросы, но я не думаю, что это значительно ускорит процесс.

Поскольку проблема заключается в том, что я думаю, что время – если это одноразовая операция, вы можете решить проблему, изменив max_execution_time в php.ini, давая скриптам гораздо больше времени для обновлений. Для этого вам нужно иметь доступ к конфигурации сервера. Если вы этого не сделаете, вы можете установить серверный пакет (например, XAMPP) на свой локальный компьютер, выполните операцию обновления, а затем переместите обновленную базу данных на ваш производственный сервер.

Существуют и другие решения для изменения этой переменной на удаленных серверах, но обычно они отключены админами.