Cómo almacenar en caché la información de la sesión PHP en Memcached
Los usuarios almacenarán cierta información en la variable global $_SESSION, a la que se puede acceder fácilmente al crear un sitio web usando PHP. La configuración relacionada con la [sesión] se proporciona en el archivo de configuración ini de PHP, que puede admitir información almacenada en archivos o servidores Memcached. Esto está determinado por el elemento de configuración session.save_handler = memcached. En la mayoría de los escenarios de aplicaciones, no es necesario conservar los datos de la sesión. Para mejorar el rendimiento del sitio web, la información de la sesión se almacenará en caché en Memcached.
Problema
Ahora viene el problema. Como todos sabemos, Alibaba Cloud OCS implementa el protocolo de caché estándar Memcached. Por un lado, los usuarios quieren reducir el consumo de memoria del servidor. por otro lado, quieren reducir el mantenimiento de Memcached. Los usuarios quieren migrar el almacenamiento de sesiones de Memcached autoconstruido a OCS sin reescribir el código. Encontré un problema durante el proceso de cambio, así que escribí este artículo. Espero que te sea útil.
En primer lugar, aclaremos la diferencia entre OCS y Memcached autoconstruido. Ambos implementan el protocolo Memcached estándar. Sin embargo, OCS es un clúster distribuido que proporciona servicios externos unificados con equilibrio de carga y sin un único punto de falla. Los usuarios pueden ajustar libre y dinámicamente configuraciones elásticas sin reiniciar el servicio. Al ser un servicio externo, existen los mecanismos de seguridad correspondientes, como lista blanca, control de tráfico, autenticación de cuentas y contraseñas, etc. En comparación con el Memcached autoconstruido, la diferencia más importante aquí es la "verificación de cuenta y contraseña", porque la mayoría de los usuarios no necesitan configurar una cuenta y contraseña para el Memcached autoconstruido, mientras que OCS carece del proceso de verificación SASL. Luego, al migrar el almacenamiento de la sesión del usuario desde Memcached autoconstruido a OCS, debe configurar la contraseña de la cuenta en php.ini.
3. Solución
1. La extensión php memcached no es compatible con la versión anterior y es necesario actualizarla a la versión 2.2.0.
Siga el tutorial del sitio web oficial de Alibaba Cloud OCS hzalicm10pub001.ocs.aliyuncs.com:11211 ″ nuevamente (tenga en cuenta que cuando se usa la extensión d, no es necesario agregar tcp:// delante de la extensión, y no es necesario agregar d)
Tiempo de clave de modificación almacenado en caché en memcached
session.gc_ maxlifetime = 1440 (en segundos, se recomienda encarecidamente establecer un tiempo razonable para garantizar que OCS siempre almacene en caché solo el punto de acceso data)
3.2 sección memcached
En la sección global de php.ini, cree una sección separada [memcached] y agregue la siguiente configuración en el espacio en blanco
[memcached]
memcached .use_sasl = Activado
memcached.sess_binary = Activado
memcached.sess_sasl_username = "tu_ocs_ nombre"
memcached.sess_sasl_password = "your_ocs_password"
memcached.sess_locking = Off
Después de completar los pasos de instalación, los otros parámetros útiles y enlaces de referencia anteriores para el segmento de Memcached y el segmento de sesión son los siguientes siguiente:
hzalicm10pub001.setSaslAuthData( "your_ocs_name", "your_ocs_password");
echo $memc-> get( "memc.sess.key.tdrct9coa2q62r2sodlq4qf376″);
/*Tenga en cuenta que la clave aquí es un prefijo, determinado por el campo memcached.sess_prefix en php.ini, el valor predeterminado es "memc.sess.key". Luego concatene el ID de sesión "trct9coa2q62r2sodlq4qf376" ingresado anteriormente */
Esta sección es suficiente. La salida del código es la siguiente:
ocs_key|s:13: "session_value";
En otras palabras, PHP SESSION se ha escrito correctamente en OCS