0

我一直在使用 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世界,我根本不知道如何处理这个问题,这是我尝试过的,如果有人可以帮助我,我将非常感激。提前致谢。

4

1 回答 1

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/>';
}
于 2013-06-17T17:02:55.213 回答