Antes de responder a isso, nunca desenvolvi nada popular o suficiente para atingir altas cargas de servidor. Trate-me como (um suspiro) um alienígena que acaba de desembarcar no planeta, apesar de conhecer PHP e algumas técnicas de otimização.
Estou desenvolvendo uma ferramenta em PHP que pode atingir muitos usuários, se funcionar corretamente. No entanto, embora eu seja totalmente capaz de desenvolver o programa, sou praticamente sem noção quando se trata de criar algo que possa lidar com um tráfego enorme. Então, aqui estão algumas perguntas (sinta-se à vontade para transformar essa pergunta também em um encadeamento de recursos).
Bases de dados
No momento, pretendo usar os recursos do MySQLi no PHP5. No entanto, como devo configurar os bancos de dados em relação a usuários e conteúdo? Eu realmente preciso de vários bancos de dados? No momento, tudo se mistura em um banco de dados - embora eu esteja pensando em espalhar dados do usuário para um, conteúdo real para outro e, finalmente, conteúdo principal do site (mestres de modelos etc.) para outro. Meu raciocínio por trás disso é que o envio de consultas para bancos de dados diferentes facilitará a carga neles como um banco de dados = 3 fontes de carregamento. Além disso, isso ainda seria eficaz se todos estivessem no mesmo servidor?
Armazenamento em cache
Eu tenho um sistema de modelo que é usado para criar as páginas e trocar variáveis. Os modelos mestres são armazenados no banco de dados e cada vez que um modelo é chamado, sua cópia em cache (um documento html) é chamada. No momento, tenho dois tipos de variáveis nesses modelos - um var estático e um var dinâmico. Vars estáticos são geralmente coisas como nomes de páginas, o nome do site - coisas que não mudam frequentemente; Vars dinâmicos são coisas que mudam a cada carregamento da página.
Minha pergunta sobre isso:
Digamos que eu tenha comentários sobre diferentes artigos. Qual é uma solução melhor: armazene o modelo de comentário simples e renderize comentários (de uma chamada de banco de dados) toda vez que a página for carregada ou armazene uma cópia em cache da página de comentários como uma página html - sempre que um comentário for adicionado / editado / excluído a página é reconectada.
Finalmente
Alguém tem alguma dica / ponteiro para executar um site de alta carga em PHP. Tenho certeza de que é uma linguagem viável para usar - Facebook e Yahoo! dê uma grande precedência - mas há alguma experiência que eu deveria prestar atenção?