Я хочу получить информацию из БД в соответствии с лимитом звонка, означает, что достигнут лимит звонков в диалплане, которого можно избежать. ниже я предоставляю свою текущую схему БД и код php.
+----+--------+----------+-----------+--------------+------------+------+--------+---------------------+
| id | prefix | priority | tunnel | device_ip | call_limit | used | status | created_on |
+----+--------+----------+-----------+--------------+------------+------+--------+---------------------+
| 1 | 923 | 1 | Asim_Pak4 | 172.55.85.10 | 1 | 1 | 1 | 2019-10-26 21:57:12 |
| 2 | 923 | 2 | Asim_Pak4 | 172.55.85.20 | 1 | 1 | 1 | 2019-10-26 21:57:12 |
| 3 | 923 | 3 | Asim_Pak4 | 172.55.85.30 | 1 | 1 | 1 | 2019-10-26 21:57:12 |
+----+--------+----------+-----------+--------------+------------+------+--------+---------------------+
3 rows in set (0.00 sec)
Мой PHP:
$dial_no = "923480678736";
$RT1_Sql="SELECT priority,device_ip,call_limit FROM v4g_dialplan WHERE '$dial_no' LIKE CONCAT(prefix,'%') AND status=1 ORDER BY priority ASC LIMIT 1";
$RT1_result=mysql_query($RT1_Sql,$db_con);
while ($RT1_data = mysql_fetch_array($RT1_result, MYSQL_ASSOC)){
$RT1_Prio = $RT1_data['priority'];
$RT1_GwIP = $RT1_data['device_ip'];
$RT1_Gw_CallLimit = $RT1_data['call_limit'];
$agi->set_variable('GROUP()',"$RT1_GwIP");
$Gw_IPCrnt_Call = $agi->get_variable('GROUP_COUNT()',"$RT1_GwIP");
$agi->verbose("Device IP : ".$RT1_GwIP);
$agi->verbose("Device CC : ".$Gw_IPCrnt_Call);
if($RT1_Gw_CallLimit >= $Gw_IPCrnt_Call)
{
echo "Device Limit Not Reached";
$DP_Next = "Tunnel";
}else
{
$RT1_Sql2="SELECT * FROM v4g_dialplan WHERE '$dial_no' LIKE CONCAT(prefix,'%') AND priority > $RT1_Prio AND status=1 ORDER BY priority ASC LIMIT 1";
$RT1_result2=mysql_query($RT1_Sql2,$db_con);
$RT1_data2 = mysql_fetch_assoc($RT1_result2);
$RT1_Prio2 = $RT1_data2['priority'];
$RT1_GwIP2 = $RT1_data2['device_ip'];
$RT1_Gw_CallLimit2 = $RT1_data2['call_limit'];
$agi->verbose("Device Prio : ".$RT1_Prio2);
$agi->verbose("Device IP : ".$RT1_GwIP2);
$agi->verbose("Device CL : ".$RT1_Gw_CallLimit2);
}
}
Как вы видите, у меня есть 3 плана набора в БД, и я получаю 1 из них &затем я делаю функцию подсчета групп и групп, чтобы проверить лимит вызовов.
Моя цель - получить план набора из db, для которого текущий предел вызова меньше, чем db call_limit, если строка не найдена, тогда выдайте ошибку плана набора номерапревышать.