在phpmyadmin中,我经常看到挂起状态为“发送数据”的查询:
SELECT SQL_CALC_FOUND_ROWS wp2a_posts.ID FROM wp2a_posts WHERE 1=1 AND wp2a_posts.post_author IN (1) AND wp2a_posts.post_type = \'post\' AND (wp2a_posts.post_status = \'publish\') ORDER BY wp2a_posts.post_date DESC LIMIT 0, 3
我想禁用此功能或执行任何必要的操作,以便不需要运行这些查询,因为我的apache状态不断被“发送回复”上的连接填满,并且我的网站不断遭受停机,这可能是主要原因。
根据How to disable `SQL_CALC_FOUND_ROWS` WP_Query
需要修改以修复此问题,因此不会使用SQL\\u CALC\\u FOUND\\u ROWS查询,但我不知道在哪里编辑WP_Query
或者查看它在我的主题文件中的任何位置引用;Query causing load because of SQL_CALC_FOUND_ROWS post counting? 也没有给出明确的答案。根据https://wpartisan.me/tutorials/wordpress-database-queries-speed-sql_calc_found_rows 以下代码可以放入函数中。php的活动主题来阻止它:
if ( ! function_exists( \'wpartisan_set_no_found_rows\' ) ) :
/**
* Sets the \'no_found_rows\' param to true.
*
* In the WP_Query class this stops the use of SQL_CALC_FOUND_ROWS in the
* MySql query it generates.
*
* @param WP_Query $wp_query The WP_Query instance. Passed by reference.
* @return void
*/
function wpartisan_set_no_found_rows( \\WP_Query $wp_query ) {
if ( $wp_query->is_main_query() ) {
$wp_query->set( \'no_found_rows\', true );
}
}
endif;
add_filter( \'pre_get_posts\', \'wpartisan_set_no_found_rows\', 10, 1 );
我尝试了这一点,但SQL\\u CALC\\u FOUND\\u ROWS查询仍然不断出现。我还可以做些什么使SQL\\u CALC\\u FOUND\\u ROWS查询不运行?