Битрикс — выгрузка всех пользователей сайта в csv

29.01.2019  14:05

Задача: выгрузить всех пользователей сайта в csv файл.

require_once($_SERVER["DOCUMENT_ROOT"].'/bitrix/modules/main/include/prolog_before.php');
$csv = $_SERVER["DOCUMENT_ROOT"].'/scripts/users_export.csv';
CModule::IncludeModule('user');
global $USER;
if (!$USER->IsAdmin()){
exit;
}
set_time_limit(0);
ini_set('max_execution_time', '3600');
ini_set('memory_limit', '2048M');
$filter = Array
(
    // "ID"                  => "1 | 2",
    // "TIMESTAMP_1"         => "04.02.2004", // в формате текущего сайта
    // "TIMESTAMP_2"         => "04.02.2005",
    "ACTIVE"              => "Y",
    // "LOGIN"               => "sale_new",
    // "NAME"                 => "Виталий & Иванов",
    // "EMAIL"               => "mail@mail.ru",
);
$rsUsers = CUser::GetList(($by="personal_country"), ($order="desc"), $filter); // выбираем пользователей
$is_filtered = $rsUsers->is_filtered; // отфильтрована ли выборка ?
$rsUsers->NavStart(10000); // разбиваем постранично по 10000 записей
echo $rsUsers->NavPrint(GetMessage("PAGES")); // печатаем постраничную навигацию
while($rsUsers->NavNext(true, "f_")) :
    echo "[".$f_ID."] (".$f_LOGIN.") ".$f_NAME." ".$f_LAST_NAME." ".$f_DATE_REGISTER."
"; $fields = array( $f_ID, $f_LOGIN, $f_EMAIL, $f_NAME, $f_LAST_NAME, $f_SECOND_NAME, $f_PERSONAL_PHONE, $f_DATE_REGISTER, ); if($_REQUEST["PAGEN_1"] == 1) $f = fopen($csv, 'w+'); else $f = fopen($csv, 'a+'); if (fputcsv($f, $fields) === false) { return false; } endwhile;


Т.к. пользователей оказалось люто много - 55000 и скрипт вылетал по таймауту, то пришлось делать с постраничкой и выгрузкой по 10000.
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670) или перепиской в ВК.
1000 р./час.



перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 54  PHP 67  web-программирование 91  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю-:
Имя


email (не публикуется)