Прежде чем ответить на этот вопрос, я никогда не разрабатывал ничего настолько популярного, чтобы достигать высоких нагрузок на сервер. Считайте меня (вздох) иностранцем, который только что приземлился на планете, хотя и знает PHP и несколько методов оптимизации.
Я разрабатываю инструмент на PHP , который мог бы привлечь довольно много пользователей, если бы он работал правильно. Однако, хотя я полностью способен разрабатывать программу, я почти ничего не понимаю, когда дело доходит до создания чего-то, что может иметь дело с огромным трафиком. Вот несколько вопросов по этому вопросу (не стесняйтесь также превратить этот вопрос в ветку ресурсов).
Базы данных
В настоящее время я планирую использовать функции MySQLi в PHP5. Однако как мне настроить базы данных по отношению к пользователям и контенту? Нужно ли мне несколько баз данных? На данный момент все перемешано в одной базе данных - хотя я рассматривал возможность распространения пользовательских данных в одну, фактического контента в другую и, наконец, основного контента сайта (мастеров шаблонов и т. Д.) В другую. Я считаю, что отправка запросов в разные базы данных облегчит их загрузку, поскольку одна база данных = 3 источника загрузки. Также будет ли это эффективно, если они все будут на одном сервере?
Кэширование
У меня есть система шаблонов, которая используется для создания страниц и замены переменных. Основные шаблоны хранятся в базе данных, и каждый раз, когда вызывается шаблон, вызывается его кэшированная копия (HTML-документ). На данный момент у меня есть два типа переменных в этих шаблонах - статическая переменная и динамическая переменная. Статические переменные - это обычно такие вещи, как имена страниц, названия сайтов - вещи, которые не часто меняются; динамические переменные - это то, что меняется при каждой загрузке страницы.
Мой вопрос по этому вопросу:
Скажите, что у меня есть комментарии к различным статьям. Что является лучшим решением: сохраняйте простой шаблон комментариев и визуализируйте комментарии (из вызова БД) при каждой загрузке страницы или сохраняйте кэшированную копию страницы комментариев в виде html-страницы - каждый раз, когда комментарий добавляется / редактируется / удаляется страница перечитана.
Наконец
У кого-нибудь есть какие-либо советы / указатели для запуска сайта с высокой нагрузкой на PHP. Я почти уверен, что это работоспособный язык - Facebook и Yahoo! дать ему большое преимущество - но есть ли какие-то события, которые я должен остерегаться?