2010-11-11 17 views
1

所以我的新任務(哈哈)。我期望創建一個腳本來輪換支付網關,例如我將在數據庫中添加5個支付網關,並且必須像負載平衡器一樣給它們提供高達100%的權重。什麼是最好的方式,我應該如何構建數據庫以使其工作,其中一個網關獲得爲該支付網關ID設置的任何重量百分比。如果你能帶領我朝着正確的方向發展,或者有很好的教程,那將不勝感激加權支付網關輪換

回答

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

謝謝,我會嘗試一下,如果需要調整它,謝謝你的啓動! – 2010-11-12 00:28:30

+0

很高興我可以幫到 – DreamWave 2010-11-12 09:22:51

+0

我認爲這是關閉$ gate_perc [] = $ cur_get ['Percentage'] - ($ totalhits/$ cur_get ['Hits']);這不是命中/ totalhits獲得該網關的百分比? – 2010-11-15 09:26:39