1
所以我的新任務(哈哈)。我期望創建一個腳本來輪換支付網關,例如我將在數據庫中添加5個支付網關,並且必須像負載平衡器一樣給它們提供高達100%的權重。什麼是最好的方式,我應該如何構建數據庫以使其工作,其中一個網關獲得爲該支付網關ID設置的任何重量百分比。如果你能帶領我朝着正確的方向發展,或者有很好的教程,那將不勝感激加權支付網關輪換
所以我的新任務(哈哈)。我期望創建一個腳本來輪換支付網關,例如我將在數據庫中添加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;
我沒有測試過它,但它應該以這種方式工作。 您需要做的另一件事是每當用戶使用它時,將當前網關的匹配添加1。 希望這有助於。
謝謝,我會嘗試一下,如果需要調整它,謝謝你的啓動! – 2010-11-12 00:28:30
很高興我可以幫到 – DreamWave 2010-11-12 09:22:51
我認爲這是關閉$ gate_perc [] = $ cur_get ['Percentage'] - ($ totalhits/$ cur_get ['Hits']);這不是命中/ totalhits獲得該網關的百分比? – 2010-11-15 09:26:39