Я запускаю сайт wordpress на vps. На моем сайте слишком много пользователей, использующих loginpress, поэтому каждые пару дней форма входа в систему перестает работать и постоянно и снова перенаправляет пользователя в форму входа (а не на панель инструментов). После расследования и попытки выяснить, что происходит, я вошел в phpmyadmin и узнал, что поле session_tokens в «wp_usermeta» раздувается (т. Е. Слишком много соединений/незадействованных соединений). Я просто очистил все ценности, и все приступило к работе.Wordpress Bloated «session_token» в базе данных MySQL
Теперь я ищу способ очистить это поле от mysql db каждые 12 часов. Я искал ссылку на код Wordpress ( https://developer.wordpress.org/reference/classes/wp_session_tokens/destroy_all_for_all_users/) и нашел функцию, которая уничтожает все токены сеанса для всех пользователей.
final public static function destroy_all_for_all_users() {
$manager = apply_filters('session_token_manager', 'WP_User_Meta_Session_Tokens');
call_user_func(array($manager, 'drop_sessions'));
}
Если есть способ создать простую PHP-файл, который я мог бы работать каждый раз, чтобы очистить это будет большим (я могу затем создать хроны), но я не уверен, если это возможно, или как это можно сделать. Любая помощь приветствуется.
Спасибо.
P.s. Я попытался подключиться к плагину, чтобы выходить из режима ожидания, но это совсем не помогло.
Создание триггера в db будет одним из решений или событием, установленным для удаления записей каждые 12 часов. – RamRaider
@RamRaider. Как я могу это сделать? Я иногда использую delete FROM 'wp_usermeta', где meta_key = 'session_tokens' в консоли phpmyadmin, чтобы очистить значения, но как я могу создать событие для его выполнения каждые 12 часов? – user2334436