urfaclient на php
Некорректно написанные функции могут блокировать вызовы.solomon писал(а):ни кто не сталкивался с проблемой последовательных вызовов 2х функций урфы пхп?... не могу понять в чем я ошибаюсь... ПО последнее php 5.3 urfaphp - рабочая... переменные передаются из питона в пых скрипт... что ему нужно ума не приложу...
Обсуждалось на первых страницах - проблема скорее всего
1. в неверном кол-ве параметров
2. в функции urfa_get_data() - в первых версиях urfa_get_datа() нужно было вызывать несколько раз чтобы получить результат и корректно завершить работу функции. В исправленном варианте достаточно одного вызова, а второй вызов в этой же функции вешает скрипт.
Каждый раз создавать новый объект -> создается новое соединение к биллингу при незакрытом предыдущем. Не есть гуд.создавайте каждый раз новый объект для urfa, а затем вызывайте функцию
Вызов происходит админских функций... Сначала получить данные поользователя, далее привязать IP. Питон параметры передает судя по логам, далее присваиваются в пыхе переменным, тоже логирруются... Значит проблема получается в урфе но ен пойму где именно .....
обратил внимание при дебаге pycheker test_ex.py пишет при выполнении 0*2700 функции пишет WARNING .... NONE и не записывает адрес в базу
при запуске тогоже скрипта но в режиме pycheker test_ex.py | more
тоже пишет ВАРНИНГ НОНЕ ... НО!!!! IP адрес присваивает... у меня уж мозги прям кипят в чем же там дело....
обратил внимание при дебаге pycheker test_ex.py пишет при выполнении 0*2700 функции пишет WARNING .... NONE и не записывает адрес в базу
при запуске тогоже скрипта но в режиме pycheker test_ex.py | more
тоже пишет ВАРНИНГ НОНЕ ... НО!!!! IP адрес присваивает... у меня уж мозги прям кипят в чем же там дело....
Убрать все echo и print_r из php скрипта?solomon писал(а):Вызов происходит админских функций... Сначала получить данные поользователя, далее привязать IP. Питон параметры передает судя по логам, далее присваиваются в пыхе переменным, тоже логирруются... Значит проблема получается в урфе но ен пойму где именно .....
обратил внимание при дебаге pycheker test_ex.py пишет при выполнении 0*2700 функции пишет WARNING .... NONE и не записывает адрес в базу
при запуске тогоже скрипта но в режиме pycheker test_ex.py | more
тоже пишет ВАРНИНГ НОНЕ ... НО!!!! IP адрес присваивает... у меня уж мозги прям кипят в чем же там дело....
Не силен в питоне, может связано со stdout или stderr и subprocess.popen валится с ошибкой?
Все нашел свою ошибку!!!!
Вот в чем проблема была
как раз я использовал Попен по не заннию... на сэлле все прекрасно работает... Всем спасибо за помощь советы...
Вот в чем проблема была
Код: Выделить всё
Функция subprocess.call() блокирует вbinолнение сценария до получения ответа, в то время как функция suьpro-cess.Popen() - нет.
Скажите пожалуйста я присваиваю адрес 172.18.6.3 пользователю, в базе он отображается как -1408104957Cramac писал(а):"SELECT inet_ntoa (ip & 0xFFFFFFFF) as ip,id,uname FROM `ip_groups` WHERE `is_deleted`<1 and `uname`='$login' "
возвращает нужное
При inet_ntoa (ip & 0xFFFFFFFF) возвращает мне 11.11.11.1... почему так ?
и должен ли в базе IP быть с минусом?
оч странно... в клиенте мускуля отрабатывает, а в в скрипте пхп нет...
И еще столкунулся с проблемой... создаю пользователя Дабавляю Тариф (Период.услуга и Передача трафика) в передаче трафика добавляю IP группу с фейковым IP и пральными логином и паролем... у меня по этим логину и паролю идет аутентификация и авторизация, но при добавлении IP и затем удалении его же у пользователя нет ни одной IP группы, т.е. пропадает возможность авторизации.
Подскажите плиз как мне сделать лучше?
Запрос на вторизацию
Код: Выделить всё
authorize_check_query = "SELECT ig.ip_group_id, ig.uname, 'Cleartext-Password', ig.upass, ':=' \
FROM iptraffic_service_links il, ip_groups ig, service_links sl, accounts a \
WHERE ig.uname='%{SQL-User-Name}' AND ig.ip_group_id=il.ip_group_id AND sl.account_id=a.id \
AND a.is_deleted=0 AND a.balance>0 and a.int_status=1 and sl.id=il.id and ig.is_deleted=0 and il.is_deleted=0 and sl.is_deleted
=0"
Решено. В функции rpcf_add_service_to_user на http://wiki.flintnet.ru не хватало передачи 2х параметров ядру.MegaDEN писал(а):Помогите с проблемой, плз. Добавляю разовую услугу через функцию
0×2551 rpcf_add_service_to_user
В результате страница зависает. В логах виден старт функции, но финиша нет.Код: Выделить всё
if ($balance > 300) { $service['user_id'] = $user_id; $service['account_id'] = $account_id; $service['service_id'] = $service_id_normal; $service['service_id'] = 17; $service['service_type'] = 1; $service['return_type'] = ''; $service['tariff_link_id'] = 0; $urfa_admin->rpcf_add_service_to_user($service); //0x2551 }
Переменные вроде проверял. Подставлял явно значения. Результат тот-же. Выносил функцию в отдельный файл - тоже виснит. Ставил тип сервиса 0, скрипт не виснет.Код: Выделить всё
?Debug : Nov 25 13:23:19 b04d6b70 RPCConn[SSL]<megaden@10.1.1.10>: Call: 0xffffbffa (__rpcs_get_user_info) ?Debug : Nov 25 13:23:19 b04d6b70 RPCConn[SSL]<megaden@10.1.1.10>: Real Call: 0xffffbffa (__rpcs_get_user_info) ?Debug : Nov 25 13:23:19 b04d6b70 DBCtx: <167142232> SQL SELECT query: SELECT login, password, basic_account, create_date, last_change_date,who_create, who_change, is_juridical, full_name, juridical_address, actual_address,work_telephone, home_telephone, mobile_telephone, web_page, icq_number, tax_number,kpp_number, bank_id, bank_account, comments, email, house_id, flat_number, entrance,floor, district, building, passport, personal_manager, connect_date, is_send_invoice,advance_payment FROM users WHERE id='10' AND is_deleted=0 ?Debug : Nov 25 13:23:19 b04d6b70 DBCtx: <167142232> SQL SELECT query: SELECT group_id FROM users_groups_link WHERE user_id='10' ?Debug : Nov 25 13:23:19 b04d6b70 DBCtx: <167142232> SQL SELECT query: SELECT paramid, value FROM user_additional_params WHERE userid='10' ?Debug : Nov 25 13:23:19 b04d6b70 RPCConn[SSL]<megaden@10.1.1.10>: Call 0xffffbffa (__rpcs_get_user_info) finished... ?Debug : Nov 25 13:23:19 b04d6b70 RPCConn[SSL]<megaden@10.1.1.10>: Stream cleared ?Debug : Nov 25 13:23:19 b0adcb70 RPCConn[SSL]<phpurfa@10.1.1.10>: Call: 0x3011 (rpcf_get_tariff) ?Debug : Nov 25 13:23:19 b0adcb70 RPCConn[SSL]<phpurfa@10.1.1.10>: Real Call: 0x3011 (rpcf_get_tariff) ?Debug : Nov 25 13:23:19 b0adcb70 RPCConn[SSL]<phpurfa@10.1.1.10>: Call 0x3011 (rpcf_get_tariff) finished... ?Debug : Nov 25 13:23:19 b0adcb70 RPCConn[SSL]<phpurfa@10.1.1.10>: Stream cleared ?Debug : Nov 25 13:23:19 b0adcb70 RPCConn[SSL]<phpurfa@10.1.1.10>: Call: 0x2551 (rpcf_add_service_to_user) ?Debug : Nov 25 13:23:19 b0adcb70 RPCConn[SSL]<phpurfa@10.1.1.10>: Real Call: 0x2551 (rpcf_add_service_to_user) ?Debug : Nov 25 13:23:19 b0adcb70 UTM5 DBA: DBAccess instance created ?Debug : Nov 25 13:23:19 b0adcb70 DBA:Ctx: Looking for free context (system=0)
Версия билинга 5.2.1-008. С урфой все ок, по крайне мере все остальное работает, как по части юзерских функций, так и по части админских (добавление платежеи и т.п.)
Было:
Код: Выделить всё
case 1: //once service
break;
case 2: //periodic service
Код: Выделить всё
case 1: //once service
$packet->DataSetInt($service['slink_id']);
$packet->DataSetInt($service['discount_date']);
break;
case 2: //periodic service
Насчет DataSetLong
у меня работает так: (008u6)
function DataSetLong($param)
{
$hi = bcdiv($param,4294967296);
$lo = bcmod($param,4294967296);
$this->data[] = pack("N2", $hi, $lo);
$this->len += 12;
}
а так виснет
function DataSetLong($param)
{
$hi = base_convert(bcdiv($param,4294967296),10,16);
$lo = base_convert(bcmod($param,4294967296),10,16);
$this->data[] = pack('H*',$hi.$lo);
$this->len += 12;
}
у меня работает так: (008u6)
function DataSetLong($param)
{
$hi = bcdiv($param,4294967296);
$lo = bcmod($param,4294967296);
$this->data[] = pack("N2", $hi, $lo);
$this->len += 12;
}
а так виснет
function DataSetLong($param)
{
$hi = base_convert(bcdiv($param,4294967296),10,16);
$lo = base_convert(bcmod($param,4294967296),10,16);
$this->data[] = pack('H*',$hi.$lo);
$this->len += 12;
}