2009-05-23 28 views
13

estoy actualmente implementando MemCached en mi servicio, pero lo que sigue apareciendo es la sugerencia de que yo también debería aplicar APC para el almacenamiento en caché del código real.PHP APC, educarme

He revisado algunos de los pocos tutoriales que existen, y el PHP documentation también, pero mi pregunta principal es, ¿cómo lo implemento a gran escala? La documentación de PHP habla de almacenar variables, pero no es tan detallada.

Perdónenme por no tener educación en esta área, pero me gustaría saber dónde se implementa esto en sitios reales. ¿Guardo literalmente en caché todo o solo las partes que se usan con frecuencia, como funciones?

Gracias!

Respuesta

9

Como sabe, PHP es un lenguaje interpretado, por lo que cada vez que llega una solicitud al servidor, necesita abrir todos los archivos necesarios e incluidos, analizarlos y ejecutarlos. Lo que APC ofrece es omitir los pasos de requerir/incluir y analizar (los archivos aún tienen que ser necesarios, pero se almacenan en la memoria para que el acceso sea mucho más rápido), por lo que los scripts solo tienen que ejecutarse. En nuestro sitio web, utilizamos una combinación de APC y memcached. APC para acelerar los pasos mencionados anteriormente, y memcached para permitir el almacenamiento rápido y distribuido y el acceso de ambas variables globales (función de muy alto precomputed llama etc que pueden ser compartidos por varios clientes para una cierta cantidad de tiempo), así como las variables de sesión. Esto nos permite tener varios servidores front-end sin perder ningún estado del cliente, como el estado de inicio de sesión, etc.

Cuando se trata de lo que debe almacenar en caché ... bueno, eso realmente depende de su aplicación. Si necesitas varias interfaces en algún momento, intentaré usar memcached para almacenar y almacenar en caché, y usar APC como un caché de código de operación.

+0

Sí, esto suena como el tipo de sistema que probablemente usaré yo mismo. ¿Establece el tiempo de almacenamiento de los archivos en el caché de APC, cuál es el tamaño ideal para un caché APC (10mb, 500mb, etc.) y si se realizan cambios en el archivo PHP real, lo vuelve a almacenar en caché o solo después ¿El período de tiempo establecido para caché expira? – James

+0

Por defecto, APC verifica el tiempo de modificación de cada archivo requerido para una solicitud. Por lo tanto, si realiza una nueva implementación, APC automáticamente analizará y almacenará en caché el archivo más reciente. La variable de la APC a mirar aquí es * apc.stat *. SI apaga esto, necesitará reiniciar el servidor web para usar el nuevo código.Sin embargo, esto hará que APC sea más rápido ya que no necesita verificar el sistema de archivos. Memoria ... No estoy muy seguro. De nuevo, depende de tu sistema. Si lo usa solo para caché OpCode, no necesitará mucha memoria. – PatrikAkerstrand

+0

Cuánto psace requiere depende de qué tan grande sea su código. Para uno de buen tamaño, comenzaría en 64 MB. Tiendo a dejar bastante margen también 2.5-3x más de lo que el código realmente termina tomando, así que puedo poner otra versión al lado. Para un sitio ocupado, apc.stat = 0 es útil, pero también puede borrar el caché de una llamada de función, en lugar de reiniciar Apache. –

9

APC es un opcode cache y un caché de datos general. Este último funciona más o menos como memcached, mientras que el caché de código de operación funciona almacenando en caché los archivos php analizados, para que no tengan que analizarse en cada solicitud. Eso generalmente puede acelerar el tiempo de ejecución un poco.

+0

Ah, suena como si el caché de código de operación será la parte más útil a mi servicio. ¿Tiene más información sobre la implementación de APC en una situación de caché Opcode? – James

+0

bien ... básicamente solo instalas la extensión y configuras algunas configuraciones en php.ini. Si [descarga el código fuente] (http://pecl.php.net/package/apc) para la extensión de pecl, hay una pequeña aplicación web distribuida con él, que puede usar para ver algunas estadísticas. De lo contrario, [el manual] (http://www.php.net/apc/) es bastante completo. – troelskn

+0

es solo cuestión de establecer cuánto espacio usará y colocarlo en el servidor. Para la mayoría de los sitios web significativos, es obvio querer tenerlos. He visto una máquina pasar de una media de carga de 1.0+ a <0.3 cuando lo instalé en un servidor, porque había habido tanta compilación redundante en cada página de carga. –

2

No tiene que implementar las características de caché del código de operación de APC, solo habilítelas como un módulo php.

El tamaño de la memoria caché APC y otra información de configuración es here.