X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Допилить плагин WP, Долго выполняется, нужно задать лимит.
TrustMan
TrustMan
Topic Starter сообщение 9.10.2015, 15:05; Ответить: TrustMan
Сообщение #1


Участник
***

Группа: User
Сообщений: 159
Регистрация: 12.5.2015
Поблагодарили: 51 раз
Репутация:   8  


Необходимо доработать плагин https://wordpress.org/plugins/inactive-user-deleter/

Проблема: очень много данных нужно обработать - вешает сервер.
Задача: В настройки плагина внести пункт "Взять N аккаунтов" который бы задавал количество обрабатываемых за раз аккаунтов.
Как я предполагаю это должно работать: плагину задаются настройки поиска пользователей по параметрам. Базе данных отправляется запрос найти одного подходящего под описание, повторяем N раз поиск, переходим к обработке списка.

В результате должно корректно удалиться N пользователей, а так же их метаинфо.

Бюджет 500р.

Ранее было обращение с решением вопроса "перенаселённости мертвецами" к толковому прогеру. В результате он написал функцию:

Код
/**
* функция удаления пользователей
* $day - количество дней с момента регистрации;
* $limit - лимит за 1 выполнение функции
**/
function delete_inactive_users( $day='120', $limit = 550 ) {
    global $wpdb;
    $cur_date = current_time('mysql', 0);
    // формируем запрос
    $sql = "
    SELECT ID FROM $wpdb->users
        WHERE
            TIMESTAMPDIFF(DAY, '$cur_date', user_registered) < -{$day}
            AND
            (SELECT COUNT(*) FROM $wpdb->comments WHERE user_id = ID)  < 1
        LIMIT $limit
    ";
    // получаем пользователей
    $res = $wpdb->get_results( $sql, ARRAY_A );
    if ( $res )      
        foreach ( $res AS $val )
            $users .= !$users ? $val['ID']: ', ' . $val['ID'];                
    else return false;
    
    // удаление пользователей
    $sql = "DELETE FROM $wpdb->users WHERE ID IN ($users)";
    $res = $wpdb->get_results( $sql, ARRAY_A );
    // удаление метаданных
    $sql = "DELETE FROM $wpdb->usermeta WHERE user_id IN ({$users})";
    $res = $wpdb->get_results( $sql, ARRAY_A );    
    //print_r($res);
}


add_action( 'delete_inactive_users_task_hook', 'delete_inactive_users' );

if ( ! wp_next_scheduled( 'delete_inactive_users_task_hook' ) ) {
  wp_schedule_event( time(), 'hourly', 'delete_inactive_users_task_hook' );
}


Прописал его в функшн темы - ничего не происходит. Предоставить доступ к сайту не могу.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mmkulikov
mmkulikov
сообщение 10.10.2015, 10:44; Ответить: mmkulikov
Сообщение #2


Старожил
******

Группа: Active User
Сообщений: 2031
Регистрация: 21.9.2012
Из: СССР
Поблагодарили: 587 раз
Репутация:   68  


Цитата(TrustMan @ 9.10.2015, 13:05) *
Предоставить доступ к сайту не могу.

А как Вы тогда представляете себе процесс выполнения работы?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Плагин вывода страниц на главную
2 sebadoh 946 30.11.2017, 8:00
автор: Nell
Открытая тема (нет новых ответов) Помогите найти плагин на WP
Отзывы с профилей соц сетей
1 SEOMR 447 30.11.2017, 7:18
автор: Nell
Открытая тема (нет новых ответов) Допилить курс валют 600 рублей
PHP, xml,join,ajax
2 devvver 621 10.11.2017, 16:55
автор: devvver
Открытая тема (нет новых ответов) Посоветуйте адаптивный лайтбокс-плагин с возможностью масштабирования
7 Delpix 706 15.9.2017, 17:24
автор: Delpix
Открытая тема (нет новых ответов) WP плагин для ПП Tripster (экскурсии)
Каталог экскурсий на вашем WP сайте
5 UmbrellaCoders 915 3.8.2017, 19:09
автор: _watson_


 



RSS Текстовая версия Сейчас: 18.12.2017, 3:43
Дизайн