Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 加权支付网关旋转器_Php_Mysql_Database Design - Fatal编程技术网

Php 加权支付网关旋转器

Php 加权支付网关旋转器,php,mysql,database-design,Php,Mysql,Database Design,所以我的新任务(lol)。我正在寻找创建一个脚本,将轮流支付网关,例如,我将在一个数据库中添加5个支付网关,并给它们一个权重,就像负载平衡器一样,总计高达100%。如果一个网关获得为该支付网关id设置的任何权重百分比,那么最好的方法是什么?我应该如何构建数据库以实现这一点。如果您能为我指明正确的方向,或者提供任何好的教程,我将不胜感激我的想法: 给每个网关一个“点击”栏。包含用户使用它的次数。以及每个网关所需权重的百分比列。 因此,该表为: 名称:网关 列:网关、命中率、百分比 然后,在向用户发

所以我的新任务(lol)。我正在寻找创建一个脚本,将轮流支付网关,例如,我将在一个数据库中添加5个支付网关,并给它们一个权重,就像负载平衡器一样,总计高达100%。如果一个网关获得为该支付网关id设置的任何权重百分比,那么最好的方法是什么?我应该如何构建数据库以实现这一点。如果您能为我指明正确的方向,或者提供任何好的教程,我将不胜感激

我的想法: 给每个网关一个“点击”栏。包含用户使用它的次数。以及每个网关所需权重的百分比列。 因此,该表为: 名称:网关 列:网关、命中率、百分比

然后,在向用户发送网关之前,将所有网关的所有命中数相加,然后将总命中数除以每个网关的命中数,并将值存储在一个数组中。阵列的结果实际上是网关的当前百分比。然后向网关发送所需百分比和当前百分比之间的最大差异。在PHP中,在连接到数据库后,这看起来像这样:

$cur_perc_query=mysql_query("SELECT * FROM gateways");
$totalhits=0;
while ($cur_get=mysql_fetch_array($cur_perc_query)) {
$totalhits+=$cur_get['Hits'];
}
while ($cur_get=mysql_fetch_array($cur_perc_query)) {
$gate_perc[]=$cur_get['Percentage']-($totalhits/$cur_get['Hits']);
}
$highest=$gate_perc[0];
$gate_number=0;
foreach($gate_perc as $numb => $value) {
if ($highest<$value) { $highest=$value; $gate_number=$numb; }
}
$count=0;
while ($cur_get=mysql_fetch_array($cur_perc_query)) {
if ($count=$gate_number) { $chosen_gate=$cur_get['Gateway']; }
$count++;
}
echo $chosen_gate;
$cur\u perc\u query=mysql\u query(“从网关选择*);
$totalhits=0;
而($cur\u get=mysql\u fetch\u数组($cur\u perc\u query)){
$totalhits+=$cur_get['Hits'];
}
而($cur\u get=mysql\u fetch\u数组($cur\u perc\u query)){
$gate_perc[]=$cur_get['Percentage']-($totalhits/$cur_get['Hits']);
}
$highest=$gate_perc[0];
$gate_编号=0;
foreach($gate_perc as$numb=>$value){
如果我的想法是:
给每个网关一个“点击数”栏,其中包含用户使用它的次数,以及每个网关所需权重的百分比栏。
因此,该表为:
名称:网关
列:网关、命中率、百分比

然后在向用户发送网关之前,将所有网关的所有点击数相加,然后将总点击数除以每个网关的点击数,并将值存储在一个数组中。数组的结果实际上是网关的当前百分比。然后发送所需百分比与d当前百分比。在PHP中,在连接到数据库后,这看起来像这样:

$cur_perc_query=mysql_query("SELECT * FROM gateways");
$totalhits=0;
while ($cur_get=mysql_fetch_array($cur_perc_query)) {
$totalhits+=$cur_get['Hits'];
}
while ($cur_get=mysql_fetch_array($cur_perc_query)) {
$gate_perc[]=$cur_get['Percentage']-($totalhits/$cur_get['Hits']);
}
$highest=$gate_perc[0];
$gate_number=0;
foreach($gate_perc as $numb => $value) {
if ($highest<$value) { $highest=$value; $gate_number=$numb; }
}
$count=0;
while ($cur_get=mysql_fetch_array($cur_perc_query)) {
if ($count=$gate_number) { $chosen_gate=$cur_get['Gateway']; }
$count++;
}
echo $chosen_gate;
$cur\u perc\u query=mysql\u query(“从网关选择*);
$totalhits=0;
而($cur\u get=mysql\u fetch\u数组($cur\u perc\u query)){
$totalhits+=$cur_get['Hits'];
}
而($cur\u get=mysql\u fetch\u数组($cur\u perc\u query)){
$gate_perc[]=$cur_get['Percentage']-($totalhits/$cur_get['Hits']);
}
$highest=$gate_perc[0];
$gate_编号=0;
foreach($gate_perc as$numb=>$value){

如果($highestThank,如果需要的话,我会尝试一下并调整它,谢谢你的启动!我想这是off$gate_perc[]=$cur_get['Percentage']-($totalhits/$cur_get['Hits']);如果获得网关百分比,那不是Hits/totalhits吗?你是对的-我忽略了这一点。我只是打字太快了:)会是这样的:$gate_perc[]=$cur_get['Percentage']-($cur_get['Hits']/$totalhits)*100)当然,因为php中的变量有时只作为整数,所以您需要指定结果应该是一个浮点数,因为:假设我们想要200中20的百分比,即20/200=0.1。因为这是一个浮点数,php可能只返回0,然后乘以100,仍然返回0而不是10。我认为使用bcdiv($numb1,$numb2,numb_of_numbers_后)是明智的。我建议你在任何你希望结果包含浮点的地方使用bcdiv除法。好吧,酷,我的最后一个问题是为什么要减去$cur_get['Percentage']-还有计算出的百分比?谢谢,如果需要的话,我会尝试并调整它,谢谢你的启动!我想这是关$gate_perc[]=$cur_get['percentage']-($totalhits/$cur_get['Hits']);如果获得网关百分比,不是应该是Hits/totalhits吗?你是对的-我忽略了这一点。我只是打字太快了:)它是这样的:$gate_perc[]=$cur_get['Percentage']-($cur_get['Hits']/$totalhits)*100)当然,因为php中的变量有时只作为整数,所以您需要指定结果应该是一个浮点数,因为:假设我们想要200中20的百分比,即20/200=0.1。因为这是一个浮点数,php可能只返回0,然后乘以100,仍然返回0而不是10。我认为使用bcdiv($numb1,$numb2,numb_of_numbers_后)是明智的。我建议你在任何你希望结果包含浮点的地方使用bcdiv除法。好吧,酷,我的最后一个问题是,为什么你要减去$cur_get['Percentage']-和计算出的百分比?