Prima di rispondere a questa domanda, non ho mai sviluppato nulla di abbastanza popolare da raggiungere carichi elevati di server. Trattami come (sospiro) un alieno che è appena atterrato sul pianeta, sebbene conosca PHP e alcune tecniche di ottimizzazione.
Sto sviluppando uno strumento in PHP che potrebbe raggiungere molti utenti, se funziona bene. Tuttavia, mentre sono pienamente in grado di sviluppare il programma, sono praticamente all'oscuro quando si tratta di creare qualcosa che possa gestire un traffico enorme. Quindi, ecco alcune domande (sentiti libero di trasformare anche questa domanda in un thread di risorse).
Banche dati
Al momento ho intenzione di utilizzare le funzionalità di MySQLi in PHP5. Tuttavia, come devo impostare i database in relazione a utenti e contenuti? Ho davvero bisogno di più database? Al momento tutto è confuso in un database, anche se ho preso in considerazione la possibilità di diffondere i dati degli utenti in uno, il contenuto effettivo in un altro e infine il contenuto del sito principale (master template ecc.) In un altro. Il mio ragionamento alla base di questo è che l'invio di query a database diversi faciliterà il carico su di essi come un database = 3 origini di caricamento. Inoltre sarebbe ancora efficace se fossero tutti sullo stesso server?
caching
Ho un sistema di template che viene utilizzato per costruire le pagine e scambiare le variabili. I modelli master vengono archiviati nel database e ogni volta che viene chiamato un modello viene chiamato copia cache (un documento HTML). Al momento ho due tipi di variabili in questi modelli: una var statica e una var dinamica. I Var statici sono di solito cose come i nomi delle pagine, il nome del sito - cose che non cambiano spesso; i var dinamici sono cose che cambiano ad ogni caricamento della pagina.
La mia domanda su questo:
Supponiamo di avere commenti su diversi articoli. Quale è una soluzione migliore: archivia il modello di commento semplice e visualizza i commenti (da una chiamata DB) ogni volta che la pagina viene caricata o memorizza una copia cache della pagina dei commenti come pagina html - ogni volta che un commento viene aggiunto / modificato / eliminato la pagina viene ricollegata.
Finalmente
Qualcuno ha qualche suggerimento / puntatore per l'esecuzione di un sito ad alto carico su PHP. Sono abbastanza sicuro che sia un linguaggio praticabile da usare: Facebook e Yahoo! dare la precedenza - ma ci sono esperienze a cui dovrei fare attenzione?