Назад | Перейти на главную страницу

как перезапустить / очистить кэш памяти без перезапуска всего веб-сервера?

/opt/eduserver/eduserver дает мне варианты:

Использование: / opt / eduserver / eduserver {start | stop | startphp | startwww | startooo | stopphp | stopwww | stopooo | restartphp | restartwww | restartooo | status | restart | reload | force-reload}

где memcache - это модуль php, есть memcache.ini в /opt/eduserver/etc/php/conf.d.

Я хочу очистить кэш памяти из командной строки. Могу ли я сделать это как-нибудь, не «касаясь» какой-либо другой части веб-сервера?

да. вы можете очистить кэш памяти. пытаться:

telnet localhost 11211
flush_all
quit

если кэш памяти не работает на локальном хосте 11211, вам придется его настроить.

Это также будет работать с netcat

echo "flush_all" | nc -q 2 localhost 11211 

Тогда просто дождитесь «ОК».

memcflush в инструментах memcache это то, что вы хотите:

memcflush --servers=localhost:11211

+ Изменить localhost к любому вашему серверу.

Инструменты memcache могут не быть установлены на сервере, если вы используете ОС на базе Debian, вы можете установить их следующим образом:

sudo apt-get install libmemcached-tools

В Bash вы можете использовать этот причудливый синтаксис:

echo flush_all > /dev/tcp/localhost/11211

В противном случае используйте memflush команда:

memflush --servers=localhost

Вместо ожидания тайм-аутов вы можете сделать команду мгновенной, выполнив flush_all с quit команда:

printf "flush_all\r\nquit\r\n" | nc localhost 11211

В качестве альтернативы, если у вас нет nc:

printf "flush_all\r\nquit\r\n" > /dev/tcp/127.0.0.1/11211

Хотя этот метод не даст результата, но вы можете убедиться, что он работает, проверив stats чтобы увидеть это cmd_flush вырос.

(sleep 2; echo flush_all; sleep 2; echo quit; ) | telnet 127.0.0.1 11211

если вы хотите запустить его не интерактивно

спасибо @heiko

если вы используете сокет для подключения к memcached, синтаксис будет

echo "flush_all" | nc -U ~/memcached.sock