Table ip_groupsJonson писал(а):где храниться пароль на инет?
Несколько полезных SQL запросов
как то так:
Код: Выделить всё
SELECT inet_ntoa(t1.ip&0xffffffff) as IP,
mac,
t3.user_id as UserId,
t5.id as Shet,
t4.full_name as FIO
FROM
ip_groups t1,
iptraffic_service_links t2,
service_links t3,
users t4,
accounts t5,
users_accounts t6
WHERE
t1.ip_group_id = t2.ip_group_id and
t2.id = t3.id and
t3.user_id = t4.id and
t4.id = t6.uid and
t6.account_id = t5.id and
t1.is_deleted <> '1' and
t2.is_deleted <> '1' and
t3.is_deleted <> '1' and
t4.is_deleted <> '1' and
t5.is_deleted <> '1' and
t6.is_deleted <> '1'
Спасибо огромное!
То, что надо! А я сначала пробовал так:
но результат надо дополнительно обрабатывать.
Ваш вариант, определённо, лучше!
То, что надо! А я сначала пробовал так:
Код: Выделить всё
SELECT service_links.user_id,
ip_groups.ip,
ip_groups.mac
FROM
service_links,
iptraffic_service_links,
ip_groups
WHERE
service_links.id=iptraffic_service_links.id AND
iptraffic_service_links.ip_group_id=ip_groups.ip_group_id;
Ваш вариант, определённо, лучше!
Состояние пользователей, храниться в таблицы accounts, в поле is_blocked (если больше 0 то стоит какая то блокировка). Так что в этот запрос, добавьте условие t5.accounts > 0 ну и соответсвенно, в после селект t5.is_blocked
Код: Выделить всё
SELECT inet_ntoa(t1.ip&0xffffffff) as IP,
mac,
t3.user_id as UserId,
t5.id as Shet,
t4.full_name as FIO
FROM
ip_groups t1,
iptraffic_service_links t2,
service_links t3,
users t4,
accounts t5,
users_accounts t6
WHERE
t1.ip_group_id = t2.ip_group_id and
t2.id = t3.id and
t3.user_id = t4.id and
t4.id = t6.uid and
t6.account_id = t5.id and
t1.is_deleted <> '1' and
t2.is_deleted <> '1' and
t3.is_deleted <> '1' and
t4.is_deleted <> '1' and
t5.is_deleted <> '1' and
t6.is_deleted <> '1'
Показывает IP с любой блокировкой:kirush писал(а):Помогите с запросом, выдернуть IP адреса у кого установлена системная блокировка.
Код: Выделить всё
SELECT u.id AS uid, inet_ntoa(ig.ip)
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 a.is_blocked != 0
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;
есть скрипт
он выбирает ip абонента и описание тарифа, точне описание услуги в тарифном плане(там указана скорость ап/даун)
вот такой получается вывод
через урфу все это делается ужасно долго, 1000 абонов 10 минут. кто может помочь с SQL запросом...?
думаю он должен в разы быстрее отработать.
Код: Выделить всё
<?php
$db_host='DB_host';
$db_base='UTM5';
$db_user='блабла';
$db_password='блабла';
$db_connect=mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_base,$db_connect);
$query="SELECT u.id, u.basic_account FROM users u, accounts a WHERE u.is_deleted = '0' AND u.basic_account = a.id AND a.int_status = '1'";
$result=@mysql_query($query);
while ($row = mysql_fetch_array($result)) {
require_once("/netup/utm5/urfa/URFAClient.php");
$urfa_admin = new URFAClient_Admin('блабла', 'блабла');
$asu = $urfa_admin->rpcf_get_all_services_for_user($row[1]);
$slink_id = $asu['services'][0]['slink_id'];
$isl = $urfa_admin->rpcf_get_iptraffic_service_link($slink_id);
$u_tariff = $urfa_admin->rpcf_get_user_tariffs($row[0], $account_id=0);
$tariff_id = $u_tariff ['user_tariffs'] [0] ['current_tariff'];
$i_tarriff = $urfa_admin->rpcf_get_tariff($tariff_id);
$ip = $isl['ip_groups'][0]['ip'];
$speed = $i_tarriff['services'][0]['comment'];
echo $ip,"\t",$speed,"\n";
}
?>
вот такой получается вывод
Код: Выделить всё
77.232.128.131 6500/6500
думаю он должен в разы быстрее отработать.
заменил почти все SQL запросами, в 5 раз быстрее отрабатывает скрипт, ток не приложу ума как заменить
на SQL запрос....помогите плз, кто знает....
теперь цикл выглядит так
Код: Выделить всё
$urfa_admin->rpcf_get_iptraffic_service_link($slink_id);
теперь цикл выглядит так
Код: Выделить всё
while ($row = mysql_fetch_array($result)) {
require_once("/netup/utm5/urfa/URFAClient.php");
$urfa_admin = new URFAClient_Admin('блабла', 'блабла');
$slink_id = mysql_fetch_array(@mysql_query("SELECT id FROM service_links WHERE user_id = '".$row[0]."' AND account_id = '".$row[1]."' AND is_deleted = 0 AND tariff_link_id > 0"));
$isl = $urfa_admin->rpcf_get_iptraffic_service_link($slink_id[0]);
$tariff_id = mysql_fetch_array(@mysql_query("SELECT tariff_id FROM account_tariff_link WHERE account_id = '".$row[1]."' AND is_deleted = 0"));
$speed = mysql_fetch_array(@mysql_query("SELECT comment FROM services_data WHERE tariff_id = '".$tariff_id[0]."'"));
$string = $isl['ip_groups'][0]['ip']."\t".$speed[0]."\n";
$fp = fopen ("file.txt", "a");
fwrite ($fp, $string);
fclose ($fp);
}
Последний раз редактировалось starchik Пт дек 07, 2012 14:39, всего редактировалось 1 раз.
-
- Сообщения: 2
- Зарегистрирован: Чт авг 09, 2012 12:45
включая удаленныхMunsera писал(а):Здравствуйте, коллеги.
Подскажите скрипт, который сбросит баланс всех пользователей в "0".
Спасибо.
Код: Выделить всё
UPDATE accounts SET balance=0;
Код: Выделить всё
UPDATE accounts SET balance=0 WHERE is_deleted=0;
Не получается:
Захожу в админку и вижу те же самые цифры на балансе. Ничего не меняется.
Код: Выделить всё
mysql> use UTM5;
Database changed
mysql> UPDATE accounts SET balance=0;
Query OK, 120 rows affected (0.12 sec)
Rows matched: 120 Changed: 120 Warnings: 0