我一直在使用 PHP(我对此很陌生),我有这种情况:
我有一个包含来自文件的 3 个(或更多)IP 地址 + 端口的列表,所以我的文件的每一行都有:
192.168.3.41:8013
192.168.3.41:8023
192.168.3.41:8033
所以在我的数组中,这些是 elements array[0], array[1], array[2]
。该应用程序的目的很简单,ping IP:PORT 并知道它是否正在响应以及它有多少 ping 错误。但这还不是全部,我必须计算完成该过程所需的时间为 3 分钟和 1 分钟。因此,我被要求与 MemCache 合作执行以下操作:
对于每个 IP:PORT,我需要在 MemCache 中保存我在 3 分钟内有多少错误以及我在 1 分钟内有多少错误,所以像这样:
对于 3 分钟内的错误数
Map<Key, Value> = Map<IP:PORT, NumberOfErrors3Mins>
对于 1 分钟内的错误数
Map<Key, Value> = Map<IP:PORT, NumberOfErrors1Min>
因此,数据样本可能是这样的:
3分钟:
<192.168.3.41:8013, 5>
<192.168.3.41:8023, 2>
<192.168.3.41:8023, 0>
1 分钟:
<192.168.3.41:8013, 3>
<192.168.3.41:8023, 1>
<192.168.3.41:8023, 1>
所以,我有两张地图和每张地图的 3 个条目。我对 PHP 很陌生,而 MemCache 对我来说有点困难,我建立的逻辑如下:
$array = array('192.168.3.41:8013','192.168.3.41:8023','192.168.3.41:8033');
for ($i = 0; $i < count($array); ++$i){
$currentProxy = $array[$i];
echo "working on $i : <br/>";
echo "good to see you friend:".$currentProxy."<br/>";
$res1 = $memt1->get($currentProxy);
$res2 = $memt2->get($currentProxy);
echo "response for proxy:".$res1."<br/>";
echo "response for proxy:".$res2."<br/>";
if (!$res1){
echo "Does not exist - create<br/>";
$memt1->set($currentProxy, 1, null, 0);
} else {
echo "Does exist - help<br/>";
$memt1->increment($currentProxy);
}
if (!$res2){
echo "Does not exist - create<br/>";
$memt2->set($currentProxy, 1, null, 0);
} else {
echo "Does exist - help<br/>";
$memt2->increment($currentProxy);
}
}
我面临的问题是memt1和memt2都指的是同一个,例如,如果我为memt1增加<192.168.3.41:8013>,它也会为memt2增加它,我认为这可能是一个非常菜鸟的问题,但是我刚刚进入PHP世界,我根本不知道如何处理这个问题,这是我尝试过的,如果有人可以帮助我,我将非常感激。提前致谢。