llenar manualmente caché de opcode para toda aplicación utilizando apc_compile_file, a continuación, cambiar a nueva versión

StackOverflow https://stackoverflow.com/questions/2834942

Pregunta

¿Alguien tiene un gran sistema, o cualquier idea, para hacer lo que dice el título?

quiero versión de producción del interruptor de la web app-- escrito en PHP y servido por Apache-- de liberación 1234 para liberar 1235, pero antes de que eso ocurra, tiene todos los archivos que ya están en la memoria caché de código de operación (APC). A continuación, después del cambio, quite las viejas entradas de caché para archivos de liberación de 1234.

Por lo que yo puedo pensar en que hay tres maneras fáciles de atómicamente cambiar de una versión a la siguiente.

  1. Haga que un enlace simbólico, por ejemplo / en vivo, que es siempre la raíz del documento, pero se cambió a punto de una versión a la siguiente.
  2. Del mismo modo, tener un directorio / en vivo que es siempre la raíz del documento, pero el uso

    mv viven OldVersion && mv newversion vivo

    para cambiar a la nueva versión.

  3. Editar configuración de Apache para cambiar la raíz del documento a newversion, a continuación, reinicie Apache.

Creo que es preferible no tener que hacer 3, pero no puedo pensar en cualquier caso precompilar todos los archivos PHP y utilizar 1 o 2 para la liberación del interruptor.

Entonces, ¿puede alguien o me convence que está bien que confiar en la opción 3, o dígame cómo trabajar con 1 o 2, o revelar alguna otra opción que no estoy pensando?

¿Fue útil?

Solución

Exactamente qué es lo que quiere hacer esto?

Cuando cambio a una nueva versión, sólo dejo mi Apache, reemplazar los archivos PHP en el servidor a través de la caja de mi VCS y reiniciar Apache. En su mayoría se tarda menos de 30 segundos para sacar esto adelante, es incluso scripts. Todo lo que se ejecuta en un momento en que hay pocos o ningún usuario. Después de eso, la caché de código de operación está vacío y se llenará tan pronto como alguien usa los archivos.

Tal vez los primeros éxitos no tendrá un rendimiento óptimo, pero que no deben ser tan malo. En mis sistemas de producción que nadie se dio cuenta de esta caída de rendimiento a corto. Y hay algunos sistemas de carga muy pesada entre ellos.

Se puede incluso colocar un simple "actualización ... volver pronto" pantalla en su servidor, mientras que la sustitución de los archivos para evitar cualquier mensaje de error molestar a los usuarios.

Otros consejos

  

A continuación, después del cambio, quite el viejo   entradas de caché para archivos de liberación   1234.

Sólo se puede borrar toda la memoria caché o ninguno en absoluto. No es un proceso selectivo. Esto puede cambiar su enfoque del problema. Si la compilación previa es de suma importancia se verá forzado a bajar el servidor durante la conmutación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top