Запишите все мои пользователи и их атрибуты в файл (100K + пользователи) EAV таблицы и автоматизации

Таким образом, у меня есть крупномасштабный сайт WordPress 100K + пользователей.

Мне нужно перебрать каждого пользователя и записать некоторые данные, которые хранятся в его строке WP_Users, и некоторые метаданные, содержащиеся в таблице WP_Usermeta.

Проблема в том, что при 100K + пользователях это довольно быстро исчерпывает память и генерирует 3 запроса на пользователя. Вы можете видеть, что у меня есть размер пакета и постраничная настройка для разбивки на страницы, но я хочу знать, как я могу выполнить это рекурсивно, пока он не завершит итерацию для каждого пользователя. При размере пакета в 500 это занимает 195 страниц, и я не могу сидеть там и запускать каждую партию, каждый раз нажимая на веб-страницу. Плюс это только растет и будет ухудшаться. Как я могу автоматизировать этот процесс? Является ли очередь сообщений вроде rabbitMQ ответом, есть ли быстрый инструмент для этого или я просто идиот? Я написал некоторый javascript, чтобы посещать веб-страницу снова и снова 195 раз и каждый раз увеличивать постраничную переменную, но она очень медленная и требует, чтобы я оставил свой компьютер на определенной веб-странице.

<?php
$users = get_users(array('fields' => array('ID'), 'number' => $batch_size, 'paged' => $i));
$filetowrite = fopen($filename, 'a');

foreach ($users as $user) {
$userdata = get_userdata( $user );

$phone_number = get_user_meta($user, 'billing_phone', true);

if (isset($userdata->first_name)) {
$first_name = $userdata->first_name;
} else {
$first_name = '';
}

if (empty($first_name)) {
$first_name = get_user_meta($user, 'billing_first_name', true);
}

if (isset($userdata->last_name)) {
$last_name = $userdata->last_name;
} else {
$last_name = '';
}

if (empty($last_name)) {
$last_name = get_user_meta($user, 'billing_last_name', true);
}
fwrite($filetowrite, $phone_number.','.$userdata->user_email.','.$first_name.','.$last_name.','."\n");
}

fclose($filetowrite);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector