gpt4 book ai didi

php - MySQL 数据库中的 Wordpress 膨胀 "session_token"

转载 作者:行者123 更新时间:2023-11-29 03:27:54 31 4
gpt4 key购买 nike

我在 vps 上运行一个 wordpress 网站。我的网站有太多用户使用 wordpress 登录,所以每隔几天网站登录表单就会停止工作,并一次又一次地将用户重定向到登录表单(而不是仪表板)。经过调查并试图弄清楚发生了什么事,我登录到 phpmyadmin 并发现“wp_usermeta”中的“session_tokens”字段变得臃肿(即连接/空闲连接太多)。我刚刚清除了所有值,一切都开始工作了。

现在我正在寻找一种方法,每 12 小时从 mysql 数据库中清除该字段。我查找了 Wordpress 代码引用( https://developer.wordpress.org/reference/classes/wp_session_tokens/destroy_all_for_all_users/ ) 并找到了一个函数来销毁所有用户的所有 session token 。

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 文件,那就太好了(然后我可以创建一个 cron 作业),但我不确定这是否可行或如何实现完毕。感谢您的帮助。

谢谢。

P.s.我确实尝试了一个插件来注销空闲连接,但这根本没有帮助。

最佳答案

WordPress 具有安排内置 cron 任务的能力,因为有一种 WordPress 方法可以清除 session ,因此也可以使用 WordPress 来安排它。

https://codex.wordpress.org/Function_Reference/wp_schedule_event

函数的语法是:

<?php wp_schedule_event(time(), 'hourly', 'my_schedule_hook', $args); ?>

清除 session 数据需要调用的方法是:

WP_Session_Tokens::destroy_all_for_all_users();

创建一个包含内部逻辑的函数并将其传递给 wp_schedule_Event 以及您希望它何时开始、您希望它发生的频率以及您需要的任何其他参数。

关于php - MySQL 数据库中的 Wordpress 膨胀 "session_token",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853683/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com