gpt4 book ai didi

php - 扩展 WordPress 用户查询

转载 作者:行者123 更新时间:2023-11-29 18:45:09 27 4
gpt4 key购买 nike

我的 WP_Users 表中有超过 50,000 个注册用户。很多时候,我需要运行查询来检查和统计整个用户的不同状态。

我经常写如下内容。

$users = get_users(); //This query is not limited I need to run across all my users.
$active_users = 0;
foreach ($users as $user) {
$last_transaction_date = strtotime(get_user_meta($user_id, 'last_trans_date', true));
$next_recurring_date = strtotime(get_user_meta($user_id, 'next_recurring_date', true));
$todays_date = strtotime('now');

if ($todays_date >= $last_transaction_date && $todays_date <= $next_recurring_date ) {
$active_users++;
}

}

这样做的问题是,它为每个用户生成 2 个数据库调用,因此速度非常慢并且容易导致崩溃。有人有建议吗?

最佳答案

您应该只对 wp_usermeta 表执行两次查询像这样

第1步

$SQLresult1 = $wpdb->get_results("
SELECT user_id, meta_value
FROM wp_usermeta
WHERE meta_key = 'last_trans_date'
AND $todays_date >= meta_value
");


//convert it to array
SQLarr1 = [];

foreach ($SQLresult1 as &$item) {
SQLarr1[$item->user_id] = $item->meta_value
}

第二步

$SQLresult2 = $wpdb->get_results("
SELECT user_id, meta_value
FROM wp_usermeta
WHERE meta_key = 'next_recurring_date'
AND $todays_date <= meta_value
");


//convert it to array
SQLarr2 = [];

foreach ($SQLresul2 as &$item) {
SQLarr2[$item->user_id] = $item->meta_value
}

第三步

$active_users = 0;

foreach ($SQLarr1 as $user_id => &$item) {
if (isset($SQLarr2[$user_id]))
$active_users++;
}

我没有检查这个代码。但你可以看到主要思想

关于php - 扩展 WordPress 用户查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44706435/

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