[SOLVED] memcacheq. Получить информацию по очередям

beba

Новичок
Здравствуйте.

Пользуюсь memcacheq (очередь на memcached). Пользуюсь стандартными функциями get, put.
Недавно понадобилось узнать информацию по очереди, примерно такую же как я получаю при помощи подключения через телнет и выполнения команды stats queue. Т.е. важна информация по названию очереди получить "количество в очереди / количество обработанных из этой очереди".
Код:
# telnet 127.0.0.1 22201
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stats queue
STAT queue101 17/17
STAT queue1 12730/12730
STAT queue201 2922/2922
END
Может кто сталкивался? Не могу чего то найти информацию по этому вопросу.
Спасибо
 

beba

Новичок

beba

Новичок
Нашел решение.

Через сокет обратился и дал команду ту, которую я даю в телнете.
Потом считал данные.
Немного через ж...пу, но все же..

Типа так:

Код:
$s = @fsockopen('127.0.0.1',22201);

fwrite($s, 'stats queue'."\r\n");

while( !feof($s) )
    {
        $temp = fgets($s, 256);

        /* тут обработка данных */

        if(trim($temp)=='END')
        {
            break;
        }
    }

fclose($s);
 

Вурдалак

Продвинутый новичок
Ну это нормальное решение, только если нормально оформить в виде отдельного сервиса, который фетчит данные об очереди. Если потом этот баг поправят, заменишь на нормальный вызов API. Ты же всё равно должен делать какую-то обёртку.
 

fixxxer

К.О.
Партнер клуба
Безотносительно вопроса, memcacheq - это не "на memcached", а просто демон очередей с memcached-интерфейсом и berkleydb внутрях. Давно не смотрел, но был довольно кривой в плане стабильности времени ответа (хотя, может, уже лучше - но проект выглядит довольно заброшенным). Но в целом, пока не поздно, советую вместо него взять что-то другое более активно поддерживаемое - например, http://kr.github.io/beanstalkd/
 
Сверху