PHP memcache存储不同值的重复键


php memcache to store repeated keys for different values

我一直在使用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/>';
}