Перейти к содержимому
Калькуляторы

Коллеги, доброго дня.

 

Внедряемся по СОРМ3, готовимся к опытной эксплуатации

 

встал вопрос заполнения справочников СОРМа ( .csv - файлы)  из биллинга  UTM5

подскажите, кто-то делал такое,

и возможно есть какое-то обкатанное  готовое решение? 

 

 

Изменено пользователем Trapp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 часа назад, Trapp сказал:

Внедряемся по СОРМ3, готовимся к опытной эксплуатации

 

встал вопрос заполнения справочников СОРМа ( .csv - файлы)  из биллинга  UTM5

У меня когнитивный диссонанс - "готовимся к опытной эксплуатации" vs "встал вопрос заполнения справочников".

Мы на стадии подготовки ТЗ вендорам на решение по приказу 573.

И уже сейчас меняем биллинг из за "встал вопрос заполнения справочников".

 

П.С. Извиняюсь за офф топ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обычно производитель СОРМа выдает требования - в каком виде и какие  данные ему нужно выгрузить из биллинга.

У нас не UTM, но подход был именно такой. Приложением к договору на поставку СОРМ идет описание, где указано как должны называться имена файлов с данными, какие данные и в каком формате в этих файлах должны содержаться, с какой периодичностью они должны обновляться и куда выгружаться. А дальше уже софт СОРМа берет эти файлики и заполняет этими данными ИС СОРМ3.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

14 минут назад, Andrei сказал:

Приложением к договору на поставку СОРМ идет описание, где указано как должны называться имена файлов с данными, какие данные и в каком формате в этих файлах должны содержаться, с какой периодичностью они должны обновляться и куда выгружаться. А дальше уже софт СОРМа берет эти файлики и заполняет этими данными ИС СОРМ3. 

Тут главная проблема, что нужных полей может просто не быть.

Информация о структуре выгрузок не секретна, проверяйте свои базы данных и если всё хорошо - парсер Вам поможет.

Или нет. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

10 часов назад, bike сказал:

проверяйте свои базы данных и если всё хорошо

У меня-то все хорошо. Это топикстартеру совет.

10 часов назад, bike сказал:

Тут главная проблема, что нужных полей может просто не быть.

А вот это никого не волнует, кроме оператора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коллеги, в том то и вопрос, что описание всех полей у всех интеграторов СОРМ +- одинковое

 

Вопрос найти - делал ли кто-то парсер для  UTM5,
чтобы не задействовать знакомого программиста

( он есть, но ленивый, почти как памятник, а пинать уже не интересно, люди то взрослые уже) 

 

либо с кем-то кто делал, или плотно работал с УТМ5 - договориться об изменениях под нас, так сказать в хорошем и взаимовыгодном темпе.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если есть описание БД (или дамп для примера) + описание от производителя СОРМ, то пишите в личку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Делал такое, но у меня еще своя дублирующая база связанная с утм.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нам куратор намекнул как то недавно, что бы им хотелось иметь базу данных абонентов, со всеми данными...не хотят видите ли они лишний раз к биллингу цепляться.  Тоже думаю, как бы им выгрузить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Antares ну так берем базу, выгружаем в цвс нужные поля и грузим на сорм. делов то :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, Cramac сказал:

@Antares ну так берем базу, выгружаем в цвс нужные поля и грузим на сорм. делов то :)

В том то и дело, что не в сорм надо ))) а куратору типа ексель, csv и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

23 минуты назад, Antares сказал:

В том то и дело, что не в сорм надо ))) а куратору типа ексель, csv и т.п.

У нас был специальный фтпшник и туда каждую неделю складывали данные в csv.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

42 минуты назад, VolanD666 сказал:

У нас был специальный фтпшник и туда каждую неделю складывали данные в csv.

А есть скриптик для забора данных из базы? )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 минуты назад, Antares сказал:

А есть скриптик для забора данных из базы? )))

А у нас не утм-ка была. Но в приципе, зная структуру бд- такой скрипт пишется за день, а может и меньше )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

4 часа назад, Antares сказал:

В том то и дело, что не в сорм надо ))) а куратору типа ексель, csv и т.п.

ну эт не знаю, для продажи видимо :)

а так, та же выгрузка, да ему куда скажет. могу свой скинуть, но опять же, там выборка с двух баз, сначала своя, потом утм

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Trapp очень много будет зависеть от того какие поля в том же utm заполнены.

Нам приходилось много дописывать, т.к. не все поля есть в стандартных.

К тому же если у вас не 5+, то писать точно все самим придется.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

5 часов назад, ShumBor сказал:

@Trapp очень много будет зависеть от того какие поля в том же utm заполнены.

Нам приходилось много дописывать, т.к. не все поля есть в стандартных.

К тому же если у вас не 5+, то писать точно все самим придется.

 

 

А там разве нельзя кастомные поля добавлять в UTM?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 09.04.2021 в 20:22, VolanD666 сказал:

А там разве нельзя кастомные поля добавлять в UTM?

Я кумекал и там много вещей.
Во первых это персональные данные и нужно регаться в РКН как оператор со всеми требованиями, организационными и техническими.
Персональные данные и данные юриков простые операторы видеть лучше не должны да и админы, кроме того нужна политика доступа к данным с логированием к ним доступа, УТМ тут не вкатывает.
Выгружать нужно изменения, поправил фамилию нужно выгружать событие с отменой старой записи, отслеживать изменения в двух базах геморно.
С wifi зонами тоже нужно интегрировать, тут нужно генерировать пользователя для СОРМ но у есть только сотовый и координаты  но обязательных полей нет ... потому бум решать как без обязательных требований.
Про необходимость сохранения оплаты и координат автоматов и т.п. тоже не в пользу УТМ.
Короче планирую выгружать пользователей в базу и минимум данных, потом отдельный человек будет заполнять все персональные данные под логи и к этой записи уже автоматом будут добавляться IP и удаляться.
Ну и wifi только в базе СОРМ, чтобы УТМ не нагружать абонентами только с номером телефона, а в СОРМ выгружалось начало сессии и конец сессии, но как координаты обновлять нужно разбираться.
В общем нужно будет писать под версию СОРМ-а, ну нужно соображать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опять же нужно решать с абонентами которые в органах работают, вообще никаких данных в UTM быть не должно так зная логин пароль всё видно в личном кабинете, тупо писать "РФ" ))))
А вот уже в СОРМ-овой базе всё по полной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 08.04.2021 в 20:10, Cramac сказал:

ну эт не знаю, для продажи видимо :)

а так, та же выгрузка, да ему куда скажет. могу свой скинуть, но опять же, там выборка с двух баз, сначала своя, потом утм

Кидай, посмотрю

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@VolanD666 У нас так и сделано. Просто до этого эти данные были только в бумажных договорах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Antares 

Скрытый текст

<?php
include ("/var/www/html/tech/admin/inc/config.php");
include ("/var/www/html/tech/admin/inc/function.php");

if($start_date = str_replace(array(" ","\r","\n"), "",file_get_contents('/var/www/html/tech/admin/sorm/date.txt')) )
echo date("d-m-Y H:i:s", $start_date);
 
function ftp_upload ($src,$remote)
{

    // установка соединения
    $conn_id = ftp_connect("10.10.10.22");

    // проверка имени пользователя и пароля
    $login_result = ftp_login($conn_id, "", "");

    // загрузка файла 
    if (ftp_put($conn_id, $remote, $src, FTP_ASCII)) {
     echo "$file успешно загружен на сервер<br>\r\n";
    } else {
     echo "Не удалось загрузить $file на сервер<br>\r\n";
    }

    // закрытие соединения
    ftp_close($conn_id);
}
        
$index_arr[1]="123123";

// типы платежей которые не смотрим
$dont_show_type_pay="(102,116,117,103,104,105,1,2,3,7)";

################################# Абоненты ####################################################
$city= runSQL("SELECT * FROM `acl_city` where id_user=2",$database_lan);
for ($i=0;$i<count($city);$i++)
{
    $citya.=" or city_id=".$city[$i]["id_city"];
}

echo "SELECT * FROM `user` where 1=1".$citya;
$user= runSQL("SELECT * FROM `user` where 1=1".$citya,$database_lan);

$user_out=array();
for ($i=0;$i<count($user);$i++)
{
    //Дом номер
    $res1= runSQL("SELECT * FROM doma where id='".$user[$i]["address"]."'",$database_lan);
    $nomer_doma = $res1[0]['nomer'];
    $street_id = $res1[0]['street_id'];

    //название улицы
    $res1= runSQL("SELECT * FROM street where id='$street_id'",$database_lan);
    $name_street = $res1[0]['name'];
    $id_gorod = $res1[0]['gorod_id'];
    $user_index=$index_arr[$res1[0]['gorod_id']];
    
    //название города
    $res1= runSQL("SELECT name FROM gorod where id='$id_gorod'",$database_lan);
    $name_gorod = $res1[0]['name'];

    $kvart = $user[$i]['kvart'];

    $utm= runSQL("
        SELECT *
        FROM users u, 
         service_links sl, 
         iptraffic_service_links isl, 
         ip_groups ig, 
         accounts a 
        WHERE u.id=sl.user_id 
         AND u.basic_account=a.id 
         AND u.login = '".$user[$i]["login"]."'
         AND isl.id=sl.id 
         AND isl.ip_group_id=ig.ip_group_id 
         AND ig.is_deleted=0 
         AND u.is_deleted=0 
         AND sl.is_deleted=0 ORDER BY u.id
    ",$database_utm);
    /*
        SELECT users.id, users.login, users_accounts.account_id
        FROM users_accounts
        LEFT JOIN users ON users.id = users_accounts.`uid`
        where users.login='".$user[$i]["login"]."'
    */
    $user_login_arr[]=$utm[0]["login"];
    if ($utm[0]["basic_account"]!="") 
        {
        $user_login_arr[]=$utm[0]["uname"];
        $user_basicid_arr[$user[$i]["login"]]=$utm[0]["basic_account"];
        }
        //print_r($utm);
        
        if ($user[$i]["data"]>$start_date or $user[$i]["update"]>$start_date)
        {
            $user_out[]=array(
                "1_id_filial"=>chr(34)."1".chr(34),
                "2_login"=>chr(34).($utm[0]["login"]!="" ? $utm[0]["uname"] : $user[$i]["login"]).chr(34),
                "3_static_ip"=>chr(34)."".chr(34),
                "4_email"=>chr(34).'-'.chr(34),
                "5_telefon"=>chr(34).$user[$i]["mobile_nomer"].chr(34),
                "6_mac"=>chr(34).''.chr(34),
                "7_data_reg"=>chr(34).date("d.m.Y H:i:s", $user[$i]["data"]).chr(34),
                "8_num_dogovor"=>chr(34).$user[$i]["id"].chr(34),
                "9_status_dog"=>chr(34).($user[$i]["otkl"]==0 ? "0": "1").chr(34), //0 podkl, 1 otkl
                "10_data_podkl_usl"=>chr(34).date("d.m.Y H:i:s", $user[$i]["data"]).chr(34),
                "11_data_otkl_usl"=>chr(34).($user[$i]["otkl"]!=0 ? date("d.m.Y H:i:s", $user[$i]["data_otkl"]) : "").chr(34),
                "12_tip_abon"=>chr(34)."0".chr(34), //0 fizik, 1 urik
                "13_tip_dannix_fio"=>chr(34)."1".chr(34),
                "14_name"=>chr(34)."".chr(34),
                "15_otch"=>chr(34)."".chr(34),
                "16_famil"=>chr(34)."".chr(34),
                "17_nestrukt_fio"=>chr(34).$user[$i]["name_full"].chr(34),
                "18_data_rogd"=>chr(34)."".chr(34),
                "19_tip_pasp_dann"=>chr(34)."0".chr(34), //0 - структурированные паспортные данные, 1 - неструктурированные
                "20_seriya_pasp"=>chr(34).$user[$i]["seria"].chr(34),
                "21_nomer_pasp"=>chr(34).$user[$i]["nomer"].chr(34),
                "22_kem_kogda_pasp"=>chr(34).$user[$i]["vidan"]." ".$user[$i]["data_vidachi"].chr(34),
                "23_nestrukt_pasp"=>chr(34)."".chr(34),
                "24_id_tip_dokumenta"=>chr(34)."1".chr(34),
                "25_bank_abon"=>chr(34)."".chr(34),
                "26_nomer_scheta_abon"=>chr(34)."".chr(34),
                "27_ur_name"=>chr(34)."".chr(34),
                "28_ur_inn"=>chr(34)."".chr(34),
                "29_ur_kont_lico"=>chr(34)."".chr(34),
                "30_ur_kont"=>chr(34)."".chr(34),
                "31_ur_bank"=>chr(34)."".chr(34),
                "32_ur_shcet"=>chr(34)."".chr(34),
                "33_tip_addr_abon"=>chr(34)."0".chr(34),//0 - структурированные данные, 1 - неструктурированные
                "34_index"=>chr(34).$user_index.chr(34),
                "35_strana"=>chr(34)."Россия".chr(34),
                "36_obl"=>chr(34)."Московская область".chr(34),
                "37_rayon"=>chr(34)."Орехово-Зуевский".chr(34),
                "38_gorod"=>chr(34).$name_gorod.chr(34),
                "39_ulica"=>chr(34).$name_street.chr(34),
                "40_dom"=>chr(34).$nomer_doma.chr(34),
                "41_korpus"=>chr(34)."".chr(34),
                "42_kvart"=>chr(34).$kvart.chr(34),
                "43_nestrukt_adr"=>chr(34)."".chr(34),
                "44_ustr_tip_addr"=>chr(34)."0".chr(34), //адрес устройства 0 - структурированные данные, 1 - неструктурированные
                "45_ustr_index"=>chr(34).$user_index.chr(34),
                "46_ustr_strana"=>chr(34)."Россия".chr(34),
                "47_ustr_obl"=>chr(34)."Московская область".chr(34),
                "48_ustr_rayon"=>chr(34)."Орехово-Зуевский".chr(34),
                "49_ustr_gorod"=>chr(34).$name_gorod.chr(34),
                "50_ustr_ulica"=>chr(34).$name_street.chr(34),
                "51_ustr_dom"=>chr(34).$nomer_doma.chr(34),
                "52_ustr_korpus"=>chr(34)."".chr(34),
                "53_ustr_kvart"=>chr(34).$kvart.chr(34),
                "54_ustr_nestrukt_adr"=>chr(34)."".chr(34),
                );    
        }

}

$fp = fopen('/var/www/html/tech/admin/sorm/abonents_new.csv', 'w');
foreach ($user_out as $fields) {
    $fields=implode(';', $fields);
    $fields=iconv('UTF-8', 'cp1251', $fields);
    fwrite($fp, $fields . PHP_EOL);
}
fclose($fp);

    
ftp_upload ("/var/www/html/tech/admin/sorm/abonents_new.csv","/abonents/abonents/abonents_new.csv");


################################# Абоненты - услуги ####################################################
unset($utm);
for ($i=0;$i<count($user);$i++)
{
        //Услуга интернет
    //$serv= runSQL("SELECT * FROM `user` limit 10",$database_lan);
    $service[]=array(
    "1_id_filial"=>chr(34)."1".chr(34),
    "2_login"=>chr(34).$user[$i]["login"].chr(34),
    "3_num_dog"=>chr(34).$user[$i]["id"].chr(34),
    "4_id_uslugi"=>chr(34).'1'.chr(34),
    "5_data_podkl"=>chr(34).date("d.m.Y H:i:s", $user[$i]["data"]).chr(34),
    "6_data_otkl"=>chr(34).($user[$i]["data_otkl"]>0 ? date("d.m.Y H:i:s", $user[$i]["data_otkl"]) : "").chr(34),
    "7_nastroyki"=>chr(34)."".chr(34)
    );

    //ищем обещанный
    if ($user_basicid_arr[$user[$i]["login"]]!="")
        {
        $utm= runSQL("SELECT *
            FROM payment_transactions
            where actual_date>'".$start_date."' and method in ('103','104') and account_id =".$user_basicid_arr[$user[$i]["login"]]."
        ",$database_utm);
        
        for ($q=0;$q<count($utm);$q++)
            {
                $service[]=array(
                "1_id_filial"=>chr(34)."1".chr(34),
                "2_login"=>chr(34).$user[$i]["login"].chr(34),
                "3_num_dog"=>chr(34).$user[$i]["id"].chr(34),
                "4_id_uslugi"=>chr(34).$utm[$q]["method"].chr(34),
                "5_data_podkl"=>chr(34).date("d.m.Y H:i:s", $utm[$q]["actual_date"]).chr(34),
                "6_data_otkl"=>chr(34).date("d.m.Y H:i:s", $utm[$q+1]["actual_date"]).chr(34),
                "7_nastroyki"=>chr(34)."".chr(34)
                );
                $q=$q+1;
            }
        }

    //ищем турбо    
}

$fp = fopen('/var/www/html/tech/admin/sorm/services.csv', 'w');
foreach ($service as $fields) {
    $fields=implode(';', $fields);
    fwrite($fp, $fields . PHP_EOL);
}
fclose($fp);
//ftp_upload ("/var/www/html/tech/admin/sorm/services.csv","/abonents/services/services.csv");

############################## Справочники - тип услуг ##########################################################
$tip_service=array();

    $tip_service[]=array(
    "1_id_filial"=>chr(34)."1".chr(34),
    "2_id_uslugi"=>chr(34)."1".chr(34),
    "3_obozn_uslugi"=>chr(34).'интернет'.chr(34),
    "4_start_time"=>chr(34).'01.01.1970 00:00:00'.chr(34),
    "5_end_time"=>chr(34)."".chr(34),
    "6_opisanie"=>chr(34).'интернет'.chr(34)
    );

    $tip_service[]=array(
    "1_id_filial"=>chr(34)."1".chr(34),
    "2_id_uslugi"=>chr(34)."104".chr(34),
    "3_obozn_uslugi"=>chr(34).'Обещанный платеж'.chr(34),
    "4_start_time"=>chr(34).'01.01.1970 00:00:00'.chr(34),
    "5_end_time"=>chr(34)."".chr(34),
    "6_opisanie"=>chr(34).'Обещанный платеж'.chr(34)
    );
    
$fp = fopen('/var/www/html/tech/admin/sorm/supplement_services.csv', 'w');
foreach ($tip_service as $fields) {
    $fields=implode(';', $fields);
    $fields=iconv('UTF-8', 'Windows-1251', $fields);
    fwrite($fp, $fields . PHP_EOL);
}
fclose($fp);
//ftp_upload ("/var/www/html/tech/admin/sorm/supplement_services.csv","/dictionaries/supplement-services/supplement_services.csv");

############################## Справочники - тип документов ##########################################################
$tip_dok=array();

    $tip_dok[]=array(
    "1_id_filial"=>chr(34)."1".chr(34),
    "2_id_dok"=>chr(34)."1".chr(34),
    "3_start_time"=>chr(34)."01.01.1970 00:00:00".chr(34),
    "4_end_time"=>chr(34).''.chr(34),
    "5_opisanie"=>chr(34)."Паспорт РФ".chr(34)
    );

$fp = fopen('/var/www/html/tech/admin/sorm/doc_types.csv', 'w');
foreach ($tip_dok as $fields) {
    $fields=implode(';', $fields);
    $fields=iconv('UTF-8', 'Windows-1251', $fields);
    fwrite($fp, $fields . PHP_EOL);
}
fclose($fp);
//ftp_upload ("/var/www/html/tech/admin/sorm/doc_types.csv","/dictionaries/doc-types/doc_types.csv");

 

############################## Справочники - способов оплаты ##########################################################
$tip_pay=array();
    $paytype= runSQL("SELECT * FROM `payment_methods` where id not in ".$dont_show_type_pay,$database_utm);
    for ($i=0;$i<count($paytype);$i++)
    {
        $tip_pay[]=array(
        "1_id_filial"=>chr(34)."1".chr(34),
        "2_id_tippay"=>chr(34).$paytype[$i]["id"].chr(34),
        "3_start_time"=>chr(34)."01.01.1970 00:00:00".chr(34),
        "4_end_time"=>chr(34).''.chr(34),
        "5_opisanie"=>chr(34).$paytype[$i]["name"].chr(34)
        );
    }

$fp = fopen('/var/www/html/tech/admin/sorm/pay_types.csv', 'w');
foreach ($tip_pay as $fields) {
    $fields=implode(';', $fields);
    $fields=iconv('UTF-8', 'Windows-1251', $fields);
    fwrite($fp, $fields . PHP_EOL);
}
fclose($fp);
//ftp_upload ("/var/www/html/tech/admin/sorm/pay_types.csv","/dictionaries/pay-types/pay_types.csv");

############################## Справочники - 7.6Пополнение баланса личного счета  ##########################################################
$pay=array();

    for ($i=0;$i<count($user);$i++)
    {
        /*$pays= runSQL("SELECT payment_transactions.method,payment_transactions.actual_date,payment_transactions.payment_incurrency FROM `users`
        left join users_accounts on users_accounts.uid=users.id
        left join payment_transactions on users_accounts.account_id=payment_transactions.account_id
        where users.login='".$user[$i]["login"]."' and payment_transactions.method not in ".$dont_show_type_pay." 
        ",$database_utm);*/
        
        $pays= runSQL("SELECT method,actual_date,payment_incurrency FROM `payment_transactions`
        where actual_date>'".$start_date."' and account_id='".$user_basicid_arr[$user[$i]["login"]]."' and method not in ".$dont_show_type_pay." 
        ",$database_utm);
        
        for($q=0;$q<count($pays);$q++)
        {
            $pay[]=array(
            "1_id_filial"=>chr(34)."1".chr(34),
            "2_id_tippay"=>chr(34).$pays[$q]["method"].chr(34),
            "3_numdog"=>chr(34).$user[$i]["id"].chr(34),
            "4_statikip"=>chr(34).''.chr(34),
            "5_data"=>chr(34).date("d.m.Y H:i:s",$pays[$q]["actual_date"]).chr(34),
            "6_summa"=>chr(34).$pays[$q]["payment_incurrency"].chr(34),
            "7_dopinfo"=>chr(34).''.chr(34)
            );            
        }

    }

$fp = fopen('/var/www/html/tech/admin/sorm/balance-fillup.csv', 'w');
foreach ($pay as $fields) {
    $fields=implode(';', $fields);
    $fields=iconv('UTF-8', 'Windows-1251', $fields);
    fwrite($fp, $fields . PHP_EOL);
}
fclose($fp);
ftp_upload ("/var/www/html/tech/admin/sorm/balance-fillup.csv","/payments/balance-fillup/balance-fillup.csv");

//записываем дату 
$fp = fopen('/var/www/html/tech/admin/sorm/date.txt', 'w');
fwrite($fp, time() . PHP_EOL);
fclose($fp);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет, как получить текущий ip абонента? На данный момент получаю так: select ipid from discount_transactions_iptraffic_all where account_id = 213213  order by id desc limit 1; Но такая реализация занимает кучу времени если её выполнять для всех абонентов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 06.05.2021 в 22:28, inettel_mal сказал:

Всем привет, как получить текущий ip абонента? На данный момент получаю так: select ipid from discount_transactions_iptraffic_all where account_id = 213213  order by id desc limit 1; Но такая реализация занимает кучу времени если её выполнять для всех абонентов

Дык может выгружать все ИПы одним запросом в хеш и дальше уже смотреть там?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.