web-dev-qa-db-fra.com

comment redémarrer / effacer memcache sans redémarrer l'ensemble du serveur web?

/opt/eduserver/eduserver me donne des options:

Utilisation:/opt/eduserver/eduserver {start | stop | startphp | startwww | startooo | stopphp | stopwww | stopooo | restartphp | restartwww | restartooo | status | restart | reload | force-reload}

où memcache est le module php il y a memcache.ini dans /opt/eduserver/etc/php/conf.d.

Je veux effacer le memcache de la ligne de commande. Puis-je le faire d'une manière ou d'une autre sans toucher à aucune autre partie du serveur Web?

48
Radek

oui. vous pouvez effacer le memcache. essayer:

telnet localhost 11211
flush_all
quit

si le memcache ne fonctionne pas sur localhost 11211, vous devrez l'ajuster.

96
heiko

Cela fonctionnera également en utilisant netcat

echo "flush_all" | nc -q 2 localhost 11211 

Attendez ensuite le "OK".

41
Danie

memcflush dans les outils memcache est ce que vous voulez:

memcflush --servers=localhost:11211

Remplacez localhost par votre serveur.

Les outils memcache peuvent ne pas être installés sur le serveur, si vous exécutez un système d'exploitation basé sur Debian, vous pouvez l'installer comme ceci:

Sudo apt-get install libmemcached-tools
24
robbrit

Dans Bash, vous pouvez utiliser cette syntaxe sophistiquée:

echo flush_all > /dev/tcp/localhost/11211

Sinon, utilisez la commande memflush:

memflush --servers=localhost
8
kenorb

Plutôt que d'attendre des délais d'attente, vous pouvez rendre la commande instantanée en suivant flush_all avec la commande quit:

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

Alternativement, si vous n'avez pas nc:

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

Bien que cette méthode ne produise pas de sortie, vous pouvez vérifier qu'elle fonctionne en vérifiant stats pour voir que cmd_flush augmenté.

4
polyethene

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

si vous souhaitez l'exécuter de manière non interactive

merci à @heiko

3
Radek

dans le cas où vous utilisez un socket pour vous connecter à memcached la syntaxe est

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

0
staabm