Antes de contestar esto, nunca he desarrollado algo lo suficientemente popular como para alcanzar altas cargas de servidor. Trátame como (suspiro) un alienígena que acaba de aterrizar en el planeta, aunque conozca PHP y algunas técnicas de optimización.
Estoy desarrollando una herramienta en PHP que podría llegar a muchos usuarios, si funciona correctamente. Sin embargo, si bien soy completamente capaz de desarrollar el programa, no tengo ni idea cuando se trata de hacer algo que pueda manejar un tráfico enorme. Aquí hay algunas preguntas al respecto (siéntase libre de convertir esta pregunta en un hilo de recursos también).
Bases de datos
Por el momento planeo usar las características de MySQLi en PHP5. Sin embargo, ¿cómo debo configurar las bases de datos en relación con los usuarios y el contenido? ¿Realmente necesito múltiples bases de datos? Por el momento, todo está mezclado en una base de datos, aunque he estado considerando difundir los datos de los usuarios a uno, el contenido real a otro y finalmente el contenido del sitio central (maestros de plantillas, etc.) a otro. Mi razonamiento detrás de esto es que enviar consultas a diferentes bases de datos facilitará la carga en ellas como una base de datos = 3 fuentes de carga. ¿Esto también sería efectivo si todos estuvieran en el mismo servidor?
Almacenamiento en caché
Tengo un sistema de plantillas que se usa para construir las páginas e intercambiar variables. Las plantillas maestras se almacenan en la base de datos y cada vez que se llama a una plantilla se llama a la copia en caché (un documento html). Por el momento tengo dos tipos de variables en estas plantillas: una variable estática y una variable dinámica. Los vars estáticos suelen ser cosas como nombres de páginas, el nombre del sitio, cosas que no cambian con frecuencia; Las variables dinámicas son cosas que cambian en cada carga de página.
Mi pregunta sobre esto:
Digamos que tengo comentarios sobre diferentes artículos. Cuál es una mejor solución: almacenar la plantilla de comentario simple y presentar comentarios (de una llamada de DB) cada vez que se carga la página o almacenar una copia en caché de la página de comentarios como una página html, cada vez que se agrega / edita / elimina un comentario Se recupera la página.
Finalmente
¿Alguien tiene algún consejo / puntero para ejecutar un sitio de alta carga en PHP? Estoy bastante seguro de que es un lenguaje viable de usar: Facebook y Yahoo! darle una gran prioridad, pero ¿hay alguna experiencia que deba tener en cuenta?