我一直在使用PHP(我对此非常陌生),我有这种情况:
我有一个包含3个(或更多)IP地址+来自文件的端口的列表,因此我文件的每一行都有:
192.168.3.41:8013
192.168.3.41:8023
192.168.3.41:8033
所以在我的数组中,这些是元素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>
所以,每张地图都有两张地图和三个条目。我对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都指的是相同的,例如,如果我增加&lt; 192.168.3.41:8013&gt;对于memt1,它也会为memt2增加它,我认为这可能是一个非常noob的问题,但我刚刚进入PHP世界,我根本不知道如何处理这个问题,这就是我试过的,如果有人可以帮帮我,拜托,我真的很感激。提前谢谢。
答案 0 :(得分:0)
我做到了,它比我之前想象的更简单:
基本上,一个MemCache用于所有类型的可能键值,我不知道如何使用它,但现在它适用于我,非常适合我,希望它可以帮助那些从这开始的人:
$memHandler = new MemCache();
if ($memHandler) {
$memHandler->connect('localhost','11211');
} else {
die('Problem with MemCache');
}
$array1 = $memHandler->get('e1');
$array3 = $memHandler->get('e3');
$lcr1 = $memHandler->get('lcr1');
$lcr3 = $memHandler->get('lcr3');
if (!$array1) {
echo 'Does not exist - create<br/>';
$memHandler->set('e1', $newArray);
} else {
echo 'Does exist<br/>';
foreach ($array1 as $key => $value) {
echo $key.':'.$value.'<br/>';
}
}
if (!$array3) {
echo 'Does not exist - create<br/>';
$memHandler->set('e3', $newArray);
} else {
echo 'Does exist<br/>';
foreach ($array3 as $key => $value) {
echo $key.':'.$value.'<br/>';
}
}
echo '=============================<br/>';
if (!$lcr1){
echo 'Does not exist - create date<br/>';
$memHandler->set('lcr1', time());
} else {
echo 'Does exist<br/>';
echo $lcr1.'<br/>';
}
if (!$lcr3){
echo 'Does not exist - create date<br/>';
$memHandler->set('lcr3', time());
} else {
echo 'Does exist<br/>';
echo $lcr3.'<br/>';
}