2010-11-11 6 views
1

Итак, моя новая миссия (LOL). Я ищу создать скрипт, который будет вращать платежные шлюзы, например, я добавлю 5 платежных шлюзов в базу данных и должен дать им вес всего 100%, как и балансировщик нагрузки. Каков наилучший способ и как я должен структурировать базу данных, чтобы сделать эту работу, когда один шлюз получает процент веса, установленный для этого идентификатора шлюза оплаты. Если бы вы могли привести меня в правильном направлении или иметь хорошие учебные пособия, которые были бы оцененыВзвешенный платежный шлюз Rotator

ответ

1

Моя идея: Дайте каждому шлюзу столбец «попадания». Содержат количество раз, когда люди его использовали. И процентный столбец - желаемый вес для каждого шлюза. Так таблица: Имени: шлюзы Колонка: Шлюз, Хиты, Процент

Затем перед отправкой пользователя шлюза, подытожить все хиты для всех шлюзов, а затем разделить общее количество хитов хитов для каждого шлюза и хранить значения в массиве. Результаты массива будут фактически текущим процентом шлюзов. Затем отправьте шлюз с наибольшей разницей между желаемым процентом и текущим процентом. В 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; 

Я не тестировал его, но он должен работать таким образом. Другое, что вам нужно сделать, это добавить 1 к хитам текущего шлюза каждый раз, когда пользователь его использует. Надеюсь, это помогло.

+0

Спасибо, что попробуем его и подстроим, если нужно, спасибо за удар! –

+0

рад, что я мог бы помочь – DreamWave

+0

Я думаю, что это выключено $ gate_perc [] = $ cur_get ['Percentage'] - ($ totalhits/$ cur_get ['Hits']); не будет ли это хитами/итогами, чтобы получить этот процент доступа? –

Смежные вопросы