memcache php apache scripting webserver

memcached php



¿Cómo comprobar si Memcache o Memcached está instalado para PHP? (9)

¿Cómo memcache si memcache o memcached (para PHP) está instalado en mi servidor web Apache?

Memcache es un daemon de caché diseñado especialmente para aplicaciones web dinámicas para disminuir la carga de la base de datos al almacenar objetos en la memoria.



El mejor enfoque en este caso es usar extension_loaded () o function_exists () son igual de rápidos.

Puedes ver evidencia aquí:

https://github.com/dragoonis/ppi-framework/blob/master/Cache/Memcached.php#L140

Tenga en cuenta que algunas extensiones de PHP como APC tienen configuraciones de php.ini que pueden deshabilitarlas aunque la extensión se pueda cargar. Aquí hay un ejemplo de cómo verificar eso también:

https://github.com/dragoonis/ppi-framework/blob/master/Cache/Apc.php#L79

Espero que esto ayude.


Puede ser relevante para ver si se está ejecutando en PHP a través de línea de comandos también-

<path-to-php-binary>php -i | grep memcache


Sé que este es un hilo viejo, pero hay otra forma que he encontrado útil para cualquier extensión.

correr

php -m | grep <module_name>

En este caso particular:

php -m | grep memcache

Si desea enumerar todos los módulos PHP, entonces:

php -m

Dependiendo de su sistema, obtendría un resultado similar a este:

[PHP Modules] apc bcmath bz2 ... lots of other modules ... mbstring memcache ... and still more modules ... zip zlib [Zend Modules]

Puedes ver que Memcache está en esta lista.


Tenga en cuenta que todas las class_exists , extensions_loaded y function_exists solo verifican el vínculo entre PHP y el paquete de memcache .

Para comprobar realmente si Memcache está instalado, debe hacer lo siguiente:

  • conocer la plataforma del sistema operativo y usar comandos del shell para verificar si el paquete de Memcache está instalado
  • o prueba si se puede establecer la conexión de Memcache en el puerto esperado

EDIT 2 : OK, de hecho aquí hay una solución completa más fácil:

if (class_exists(''Memcache'')) { $memcache = new Memcache; $isMemcacheAvailable = @$memcache->connect(''localhost''); } if ($isMemcacheAvailable) { //... }

Código obsoleto a continuación

EDITAR : En realidad, debes forzar a PHP a que emita un error en las advertencias primero. Eche un vistazo a esta respuesta a la pregunta SO .

Luego puede probar la conexión a través de:

try { $memcache->connect(''localhost''); } catch (Exception $e) { // well it''s not here }


Tienes varias opciones;)

$memcache_enabled = class_exists(''Memcache''); $memcache_enabled = extension_loaded(''memcache''); $memcache_enabled = function_exists(''memcache_connect'');


Use este código para verificar no solo si la extensión de memcache está habilitada, sino también si el daemon se está ejecutando y puede almacenar y recuperar datos con éxito:

<?php if (class_exists(''Memcache'')) { $server = ''localhost''; if (!empty($_REQUEST[''server''])) { $server = $_REQUEST[''server'']; } $memcache = new Memcache; $isMemcacheAvailable = @$memcache->connect($server); if ($isMemcacheAvailable) { $aData = $memcache->get(''data''); echo ''<pre>''; if ($aData) { echo ''<h2>Data from Cache:</h2>''; print_r($aData); } else { $aData = array( ''me'' => ''you'', ''us'' => ''them'', ); echo ''<h2>Fresh Data:</h2>''; print_r($aData); $memcache->set(''data'', $aData, 0, 300); } $aData = $memcache->get(''data''); if ($aData) { echo ''<h3>Memcache seem to be working fine!</h3>''; } else { echo ''<h3>Memcache DOES NOT seem to be working!</h3>''; } echo ''</pre>''; } } if (!$isMemcacheAvailable) { echo ''Memcache not available''; } ?>


esta es mi función de prueba que uso para verificar Memcache en el servidor

<?php public function test() { // memcache test - make sure you have memcache extension installed and the deamon is up and running $memcache = new Memcache; $memcache->connect(''localhost'', 11211) or die ("Could not connect"); $version = $memcache->getVersion(); echo "Server''s version: ".$version."<br/>/n"; $tmp_object = new stdClass; $tmp_object->str_attr = ''test''; $tmp_object->int_attr = 123; $memcache->set(''key'', $tmp_object, false, 10) or die ("Failed to save data at the server"); echo "Store data in the cache (data will expire in 10 seconds)<br/>/n"; $get_result = $memcache->get(''key''); echo "Data from the cache:<br/>/n"; var_dump($get_result); }

si ves algo como esto

Server''s version: 1.4.5_4_gaa7839e Store data in the cache (data will expire in 10 seconds) Data from the cache: object(stdClass)#3 (2) { ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) }

significa que todo está bien

¡Aclamaciones!


Puede mirar phpinfo () o verificar si alguna de las funciones de Memcache está disponible. En última instancia, compruebe si la clase Memcache existe o no.

p.ej

if(class_exists(''Memcache'')){ // Memcache is enabled. }