Поддержка Проблемы и решения 10к лишних записей в wp_options

  • Здравствуйте, уважаемые форумчане. открыл давеча таблицу БД wp_options и ужаснулся:
    куча записей вида:
    wp_image_processing_queue_batch_* со значениями вроде «a:1:{i:0;a:4:{s:7:»post_id»;s:4:»1196″;s:5:»width»;i:300;s:6:»height»;i:300;s:4:»crop»;b:1;}}»
    и
    _transient_timeout_tablepress_
    и
    _transient_doing_cron

    Всего записей: 21540 Причём за 30 минут добавилось 40 записей, т.е. их число продолжает расти. Что такое может делать и как это лечить?

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Модератор Yui

    (@fierevere)

    ゆい にゃん子

    https://ru.wordpress.org/plugins/delete-expired-transients/

    можете почистить плагином, если транзиенты (временные объекты) сами не удаляются

    радикальное решение — использовать кеширование на основе redis,memcached,apcu,xcache (что есть) с соответствующим плагином объектного кеширования
    тогда транзиенты будут сохраняться туда, это и работать будет быстрее и удаление старых записей при большом их количестве будет происходить на уровне соответствующего сервера key-value кеша

    радикальное решение — использовать кеширование на основе redis,memcached,apcu,xcache (что есть) с соответствующим плагином объектного кеширования
    тогда транзиенты будут сохраняться туда, это и работать будет быстрее и удаление старых записей при большом их количестве будет происходить на уровне соответствующего сервера key-value кеша

    Посоветуйте, пожалуйста, адекватные плагины. Использовал Autooptimize, но он несколько подтормаживал сайт.

    https://ru.wordpress.org/plugins/delete-expired-transients/

    можете почистить плагином, если транзиенты (временные объекты) сами не удаляются

    Транзиты он удалил, а вот wp_image_processing_queue_batch_57c806c3efb5764182e0c938b0e71fd0
    всё продолжают появляться… постоянно…

    Модератор Yui

    (@fierevere)

    ゆい にゃん子

    wp_image_processing_queue_batch_57c806c3efb5764182e0c938b0e71fd0
    всё продолжают появляться… постоянно…

    это вам какой-то плагин обработки изображений или их оптимизации создает
    возможно он работает неправильно, или слишком медленно, особенно если это онлайн оптимизация изображений на сторонних сервисах

    Посоветуйте, пожалуйста, адекватные плагины. Использовал Autooptimize, но он несколько подтормаживал сайт.

    то, что я посоветовала — несколько из другой оперы.
    https://wpmag.ru/2013/keshirovaniye-wordpress/
    см Кэширование объектов в WordPress и ниже
    по умолчанию транзиенты, т.е. обьекты должны где-то сохраняться,
    если ничего нет — это таблица wp_options записи вида _transient_*
    если на хостинге имеется key-value хранилище, например (мне нравится) Redis, то поставив соответствующий вспомогательный плагин для WP можно его использовать, тогда запись в БД mysql будет заменена быстрой записью и получением значений в соответствующем хранилище
    Узнайте, что есть на вашем хостинге, я бы конечно посоветовала Redis как лучший вариант с плагином https://ru.wordpress.org/plugins/redis-cache/ , но для этого редиска должна быть установлена и работать на сервере хостинга, а если на сервере редиса нет, то и плагин будет бесполезен.

    это вам какой-то плагин обработки изображений или их оптимизации создает
    возможно он работает неправильно, или слишком медленно, особенно если это онлайн оптимизация изображений на сторонних сервисах

    Кроме Responsive Lightbox & Gallery ни одного плагина, связанного с изображениями нет.
    Если его отключить, то проблему это не решит.

    • Ответ изменён 11 мес., 2 нед. назад пользователем  Alexander Babaev.
    Модератор Yui

    (@fierevere)

    ゆい にゃん子

    Responsive Lightbox & Gallery

    не он.
    Но и в стандартном WordPress такого на 100% нет.
    Возможно какой-то встроенный в тему функционал или что-то из плагинов-«комбайнов»

    Возможно какой-то встроенный в тему функционал

    Тема является дочерней темой GeneratePress

    что-то из плагинов-«комбайнов»

    Вот все установленные плагины:

    встроенный в тему функционал

    Только одно в моей теме использует БД:

    <?php
    /*
     * Страница настроек шорткода mcbsu_postlist
     * в. 0.5 (А. Бабаев)
    */
    
    /**
     * Создаем страницу настроек плагина
     */
    add_action('admin_menu', 'medcolthm_admin_postlistsettings_addpage');
    function medcolthm_admin_postlistsettings_addpage() {
    	add_options_page( 'Настройки списка постов шорткода [mcbsu_postlist]', 'Список постов', 'manage_options', 'shcdmcbsupostlist', 'medcolthm_admin_postlistsettings_page_output' );
    }
    function medcolthm_admin_postlistsettings_page_output(){
    	?>
    	<div class="wrap">
    		<h2><?php echo get_admin_page_title() ?></h2>
    		<form action="options.php" method="POST">
    			<?php
    				settings_fields('option_group');
    				do_settings_sections('medcolthm_admin_postlistsettings_setsection');
    				submit_button();
    			?>
    		</form>
    	</div>
    	<?php
    }
    /**
     * Регистрируем настройки.
     * Настройки будут храниться в массиве, а не одна настройка = одна опция.
     */
    add_action('admin_init', 'medcolthm_admin_postlistsettings_settings');
    function medcolthm_admin_postlistsettings_settings(){
    	$regargs = array(
    		'type' => 'string',
    		'group' => $option_group,
    		'description' => 'Настройки связывания шорткода mcbsu_postlist с рубриками.',
    		'sanitize_callback' => 'medcolthm_admin_postlistsettings_sanitize',
    		'show_in_rest' => FALSE,
    	);
    	register_setting('option_group', 'mcbsu_postlist_options', $regargs);
    	add_settings_section('medcolthm_admin_postlistsettings_section_id', 'Настройки связывания с рубриками', '', 'medcolthm_admin_postlistsettings_setsection' );
    	add_settings_field('mcbsu_postlist_newsall_field', 'Все новости', 'medcolthm_admin_postlistsettings_postlist_newsall_fill', 'medcolthm_admin_postlistsettings_setsection', 'medcolthm_admin_postlistsettings_section_id');
    	add_settings_field('mcbsu_postlist_news_field', 'Новости текущего учебного года', 'medcolthm_admin_postlistsettings_postlist_news_fill', 'medcolthm_admin_postlistsettings_setsection', 'medcolthm_admin_postlistsettings_section_id');
    	add_settings_field('mcbsu_postlist_classifieds_field', 'Объявления', 'medcolthm_admin_postlistsettings_postlist_classifieds_fill', 'medcolthm_admin_postlistsettings_setsection', 'medcolthm_admin_postlistsettings_section_id');
    	add_settings_field('mcbsu_postlist_photogallery_field', 'Фотогаллерея', 'medcolthm_admin_postlistsettings_postlist_photogallery_fill', 'medcolthm_admin_postlistsettings_setsection', 'medcolthm_admin_postlistsettings_section_id');
    }
    // Заполняем опцию "Новости (все)"
    function medcolthm_admin_postlistsettings_postlist_newsall_fill(){
    	$val = get_option('mcbsu_postlist_options');
    	$val = $val ? $val['newsall'] : null;
    	?>
    	<input type="text" name="mcbsu_postlist_options[newsall]" value="<?php echo esc_attr($val) ?>" />
    	<?php
    }
    // Заполняем опцию "Новости текущего учебного года"
    function medcolthm_admin_postlistsettings_postlist_news_fill(){
    	$val = get_option('mcbsu_postlist_options');
    	$val = $val ? $val['news'] : null;
    	?>
    	<input type="text" name="mcbsu_postlist_options[news]" value="<?php echo esc_attr($val) ?>" />
    	<?php
    }
    // Заполняем опцию "Последние объявления"
    function medcolthm_admin_postlistsettings_postlist_classifieds_fill(){
    	$val = get_option('mcbsu_postlist_options');
    	$val = $val ? $val['classifieds'] : null;
    	?>
    	<input type="text" name="mcbsu_postlist_options[classifieds]" value="<?php echo esc_attr($val) ?>" />
    	<?php
    }
    // Заполняем опцию "Фотогаллерея"
    function medcolthm_admin_postlistsettings_postlist_photogallery_fill(){
    	$val = get_option('mcbsu_postlist_options');
    	$val = $val ? $val['photogallery'] : null;
    	?>
    	<input type="text" name="mcbsu_postlist_options[photogallery]" value="<?php echo esc_attr($val) ?>" />
    	<?php
    }
    // Очистка данных
    function medcolthm_admin_postlistsettings_sanitize ($options) { 
    	foreach ($options as $name => & $val) {
    		if ($name == 'news')
    			$val = strip_tags($val);
    		if ($name == 'classifieds')
    			$val = strip_tags($val);
    		if ($name == 'newsall')
    			$val = strip_tags($val);
    		if ($name == 'photogallery')
    			$val = strip_tags($val);
    	}
    	return $options;
    }
    Модератор Yui

    (@fierevere)

    ゆい にゃん子

    если есть ssh доступ, то можно из каталога корня сайта поискать

    grep -ri image_processing_queue

    если нет — можете поискать image_processing_queue в файлах резервной копии сайта, у себя на компьютере

    Проверил логи и вот она ошибка?

    [03-Sep-2018 19:14:29 UTC] PHP Fatal error:  Uncaught IPQ_Process_Exception: Unable to get WP_Image_Editor for file "/var/www/html/www/***/uploads/2018/08/5.jpg": Не удалось выбрать редактор. (is GD or ImageMagick installed?) in /var/www/html/www/***/plugins/gp-premium/library/image-processing-queue/includes/class-ipq-process.php:71
    Stack trace:
    #0 /var/www/html/www/***/plugins/gp-premium/library/batch-processing/wp-background-process.php(303): IPQ_Process->task(Array)
    #1 /var/www/html/www/***/plugins/gp-premium/library/batch-processing/wp-background-process.php(449): WP_Background_Process->handle()
    #2 /var/www/html/www/***/wp-includes/class-wp-hook.php(286): WP_Background_Process->handle_cron_healthcheck()
    #3 /var/www/html/www/***/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array)
    #4 /var/www/html/www/***/wp-includes/plugin.php(515): WP_Hook->do_action(Array)
    #5 /var/www/html/www/***/wp-cron.php(126): do_action_ref_array('wp_image_proces...', Array)
    #6 {main} in /var/www/html/www/***/plugins/gp-premium/library/image-processing-queue/includes/class-ipq-process.php on line 71

    Оно?

    Модератор Yui

    (@fierevere)

    ゆい にゃん子

    gp-premium

    поскольку данная сущность платная, вопросы относительно неуемного создания записей в базу лучше задать в техподдержку gp-premium

    касательно ошибки, проверьте загружены ли у вас расширения PHP GD и (желательно) Imagick
    можете

    <?php
    phpinfo();
    ?>
    

    файл info.php например создать на сайте и зайти на него из браузера

    возможно фатальная ошибка и приводит к тому, что записи просто копятся, а не удаляются после успешного завершения задачи по обработке

    • Ответ изменён 11 мес., 2 нед. назад пользователем  Yui.
    gd
    GD Support 	enabled
    GD Version 	bundled (2.1.0 compatible)
    GIF Read Support 	enabled
    GIF Create Support 	enabled
    PNG Support 	enabled
    libPNG Version 	1.2.50
    WBMP Support 	enabled
    XBM Support 	enabled

    Imagick не установлен.

    Модератор Yui

    (@fierevere)

    ゆい にゃん子

    Unable to get WP_Image_Editor Не удалось выбрать редактор. (is GD or ImageMagick installed?)

    тогда ошибка достаточно странная, возможно баг в плагине, лучше обратиться в его техподдержку, либо включить расширение PHP ImageMagick на хостинге, если есть возможность.

    Вот ответ из ТП GeneratePress, который решил мою проблему:

    On this server, you can turn it off by adding this to wp-config.php:
    
    define( 'GP_IMAGE_RESIZER', false );

    Спасибо, Yui, за помощь и подсказки!

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Тема «10к лишних записей в wp_options» закрыта для новых ответов.