Поддержка Проблемы и решения Управление пользователями

  • Всем привет. Проблема такая, WordPress очень плохо работает с пользователями. У меня их 200000+ Таблица БД раздулась, управлять авторами не реально, когда открываешь запись на редактирование, мегабайта 4 подгружается только информации об авторах (данный баг известен и решается например плагином Co-Authors Plus). Теперь появился новый баг, пользователи перестали удаляться. После нажатия на кнопку удаления пользователя, выходят два варианта связать записи с другим юзером или удалить совсем, но кнопки подтверждения нет, просто не погружается.

    Какие есть варианты решения проблемы?

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

    (@fierevere)

    永子

    шаред хостинг или vps?

    скорее всего размер ответов sql просто превышает максимальный размер пакета max_allowed_packet

    Собственный сервер (физический) в ДЦ, оперативки, лимитов и прочего хватает.

    Модератор Yui

    (@fierevere)

    永子

    хорошо, /etc/mysql/my.cnf
    для секции [mysqld] покажите

    MariDB, другой чуть путь к конфигу

    max_connections = 100000
    max_connect_errors = 10
    table_open_cache = 2048
    skip-external-locking
    max_allowed_packet = 16M
    max_heap_table_size = 64M
    read_buffer_size = 2M
    read_rnd_buffer_size = 16M
    sort_buffer_size = 8M
    join_buffer_size = 8M
    thread_cache_size = 8
    thread_concurrency = 8
    query_cache_size = 64M
    query_cache_limit = 2M

    Модератор Yui

    (@fierevere)

    永子

    max_connections = 100000

    очень много зарезервировано,
    не ставьте больше чем реально допустимое количество процессов php + небольшой резерв.

    table_open_cache = 2048

    если mysqld используется только для wordpress то и много таблиц тоже не нужно

    max_allowed_packet = 16M

    попробуйте 64M
    если не поможет — 128M, 256M

    max_heap_table_size = 64M
    read_buffer_size = 2M
    read_rnd_buffer_size = 16M
    sort_buffer_size = 8M
    join_buffer_size = 8M
    thread_concurrency = 8

    это все лучше закомментировать, MariaDB достаточно неплохо подбирает эти параметры автоматически

    `

    Модератор Yui

    (@fierevere)

    永子

    и надеюсь вы используете InnoDB или XtraDB для больших таблиц, не myisam

    проблема не решилась
    memory_limit = 512M
    max_execution_time = 360

    Быть может есть альтернативный менеджер юзеров (плагин)?

    Тоже об этом задумался. В трекере заявка кажется умерла до лучших времен https://core.trac.wordpress.org/ticket/19867 Плагины пытался найти с таким функционалом, пока ничего не нашел.

    @kolya Korobochkin wp_dropdown_users() решается Co-Authors Plus
    А вот проблема с удалением пользователей появилась только после 200000 пользователей. Лимит памяти и 1024 не помогает.

    CoAuthors Plus как я понял позволяет еще и несколько авторов на 1 запись назначать, это явно лишний функционал. Хотя я не смотрел лично плагин, попробую на лольканом сайте у себя поиграться с ним, спасибо. Страница с пользователями, да, действительно, как то упустил из виду. Удалить пользователя можно вручную через wp cli, для этого есть соответствующая команда http://wp-cli.org/commands/user/delete/ (там как раз пример удаления с перезаписью постов на другого пользователя).

    А вот проблема с удалением пользователей появилась только после 200000 пользователей

    Кстати, еще есть функция http://codex.wordpress.org/Function_Reference/wp_is_large_network там 10к установлено. Но ничто не мешает какому-то коду из плагина, например, менять это значение используя фильтры https://core.trac.wordpress.org/browser/tags/4.1.1/src/wp-includes/ms-functions.php#L2341

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    После нажатия на кнопку удаления пользователя, выходят два варианта связать записи с другим юзером или удалить совсем, но кнопки подтверждения нет, просто не погружается.

    Написал небольшой плагин, который убирает с этого экрана список пользователей для перепривязки записей, оставляя возможность простого удаления.

    Если возможность связать записи с другим пользователем всё-таки нужна, можно заменить этот список на поле для ввода логина или ID. В задаче #19867 планируется сделать нечто подобное.

    Кстати, еще есть функция http://codex.wordpress.org/Function_Reference/wp_is_large_network там 10к установлено.

    Она влияет только на Multisite и применяется в похожих ситуациях, но не в этой.

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Управление пользователями» закрыта для новых ответов.