10ответ(ов) в теме
Preci
не в сети 3 месяца
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1644
1
02:30

Предыдущая тема закрыта.

Только что опять появилась проблема:

# Time: 150227 23:49:59
# User@Host: xxxxxxxxxxxxxxxx@ localhost []
# Query_time: 130.297054 Lock_time: 0.000235 Rows_sent: 4 Rows_examined: 261390302
SET timestamp=1425070199;
SELECT
us.ID AS user,us.user_registered AS time_action
FROM
wp_users AS us
WHERE
us.ID NOT IN (SELECT ua.user FROM wp_rcl_user_action AS ua);

-----------------------
т.е. после предыдущего исправления уменьшилось только значение Rows_sent.

Вроде понял в чем проблема:

После запуска скрипта, который мне давал Андрей, зарегистрировались 4 человека и сейчас разница между таблицей users и rcl_user_action - как раз 4 человека. что равняется Rows_sent: 4

Что делать? Видимо люди зарегались, но еще не логинились и из-за этого их нету в таблице rcl_user_action?

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
2
11:23

Да, при регистрации информация об активности не заносится в БД, надо будет поправить.
Можете пока встроить функцию rcl_update_timeaction_user(); в процесс регистрации в файле register.php или через экшн register_user

0
Preci
не в сети 3 месяца
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1644
3
13:58

А не подскажете как конкретно это сделать? Через functions.php не получается:

add_action('user_register','my_function');
function my_function(){
$no_action_users = $wpdb->get_results("SELECT COUNT(us.ID) FROM ".$wpdb->prefix."users AS us WHERE us.ID NOT IN (SELECT ua.user FROM ".RCL_PREF."user_action AS ua)");
if($no_action_users){
$wpdb->query("
INSERT INTO ".RCL_PREF."user_action( user, time_action )
SELECT us.ID, us.user_registered
FROM ".$wpdb->prefix."users AS us
WHERE us.ID NOT IN ( SELECT user FROM ".RCL_PREF."user_action )
");
}
}

----------------
После регистрации просто белый экран и все. Да и такой способ, наверное, будет каждый раз проверять все 22к пользователей? Может менее ресурсозатратно было бы в таблицу rcl_user_action вставлять пользователя через хук add_action('user_register','my_function'); ?

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
4
14:07

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

add_action('user_register','update_action_user_register');
function update_action_user_register(user_id){
global $wpdb;
$time = current_time('mysql');
$wpdb->insert(
					RCL_PREF.'user_action',
					array( 'user' => $user_id,
					'time_action'=> $time )
				);
}

0
Preci
не в сети 3 месяца
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1644
5
14:14

Спасибо, так работает, но в таблицу rcl_user_action вставляется

23059 30951 2015-02-28 14:13:07
23060 30951 2015-02-28 14:13:07

т.е. 2 раза подряд почему то

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
6
14:18

этот код не может вставлять активность два раза, возможно те же данные вставляются еще раз через какую то другую функцию, я уже не припомню где именно это происходит. Точно данные об активности не появляются в БД при регистрации без приведенного мной кода?

0
Preci
не в сети 3 месяца
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1644
7
14:22

Да, без кода выше данные о активности не вставляются

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
8
14:27

не знаю почему так у вас происходит, без дублирующего кода этого не может происходить.
Добавьте в функцию строчку с проверкой

$action = $wpdb->get_var("SELECT time_action FROM ".RCL_PREF."user_action WHERE user='$user_id'");
if($action) return false;

сразу после global $wpdb;

0
Preci
не в сети 3 месяца
На сайте с 11.11.2014
Участник
Тем 71
Сообщения 1644
9
14:31

Вот теперь все отлично, спасибо!

Возможно 2 раза вставлялось из-за того, что у меня установлен мост для Wordpress IPB и при регистрации на сайте создается аккаунт на форуме

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16929
10
14:32

Возможно.
К следующему обновлению я еще раз перепроверю функционал активности пользователя и постараюсь его оптимизировать для решения подобных проблем.

0
Тема закрыта. Публикация новых сообщений запрещена.