我一直在使用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>
所以,一个数据样本可以是这样的:
For 3 minutes:
<192.168.3.41:8013, 5>
<192.168.3.41:8023, 2>
<192.168.3.41:8023, 0>
For 1 Minute:
<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世界,我不知道如何处理这个,这是我所尝试的,如果有人能帮助我,请我真的很感激。
我做到了,这比我以前想的要简单得多:
基本上,一个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/>';
}