parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

MoKo 22.11.2013 00:40

комментирование check("connect"... ничего не изменило.
Что-то вы не так делаете, исключение должно исчезнуть (и исчезает).
а вот в библиотеке под тотоже php ситуация с коннектом к неработающему хосту проходит на ура, просто ключи не пишутся и не читаются, вернее на запись выдает false, а при чтении пусто.
У меня получается чуть другая ситуация. Есть ощущение, что выбирается один из серверов, и работа идет только с ним. То есть вот такой код:
$memcached[^memcached::open[
        $.server[localhost --server=nosuchserver]
        $.binary-protocol(true)
        $.tcp-keepalive(true)
        $.connect-timeout[5]
        $.remove-failed-servers[2]
]]

$key[^math:random(1000)]
key = $key

^for(i;1;5){
    ^try{
        $memcached.$key[v$key]
        ^break[]
    }{
        $errors[$errors Error: $exception.comment^#0A]
        $exception.handled(true)
    }
}

^for(i;1;5){
    ^try{
        value: $memcached.$key
        ^break[]
    }{
        $errors[$errors Error: $exception.comment^#0A]
        $exception.handled(true)
    }
}

$errors
С вероятностью 50% либо работает, выдает скажем

key = 936
value: v936

либо не работает, выдает

Error: set error: WRITE FAILURE (5)
Error: set error: WRITE FAILURE (5)
Error: set error: WRITE FAILURE (5)
Error: set error: WRITE FAILURE (5)
Error: set error: WRITE FAILURE (5)
Error: get error: SERVER IS MARKED DEAD (35)
Error: get error: SERVER IS MARKED DEAD (35)
Error: get error: SERVER IS MARKED DEAD (35)
Error: get error: SERVER IS MARKED DEAD (35)
Error: get error: SERVER IS MARKED DEAD (35)

То есть если вы хотите, чтобы писалось на все сервера, а читалось с любого из них, то из коробки оно так не умеет. А вот как должен работать remove-failed-servers и почему он не работает в данном случае - это уже боюсь не к парсеру вопрос.