В настоящее время я работаю над браузером - на основе MMO и выбрали стек LAMP из-за чрезвычайно низкой стоимости для начала производства (по сравнению с Windows + IIS + ASP.NET/C# + SQL Server, хотя у меня есть MSDN Universal). Однако мне понадобится PHP-фреймворк для это непростая задача. Я не ограничен ничем, кроме возможности работать в Linux, так как я буду использовать выделенное решение для облачного хостинга (и образ VMWare для разработки) и c и настройте его по мере необходимости.
В произвольном порядке:
Я прочитал много сравнений и знаю, что это действительно жаркие споры. Общий ответ - «попробуйте и убедитесь сами, что вам подходит».Однако я не могу сказать, что это легко для этой задачи, и я прошу вас поделиться опытом создания приложений с аналогичными требованиями. Пока что я привязан к Zend и CakePHP по общим критериям, однако все известные фреймворки в той или иной мере предлагают одни и те же функциональные возможности, но с разными подходами, каждый со своими преимуществами и недостатками.
Правки:
Масштабирование - не та проблема, которую вы можете ожидать от веб-фреймворка. Даже успешные MMO с почти безграничным бюджетом прибегали к сегментированию и инстансированию. Лучший подход - разработать модульное приложение. По мере необходимости вы можете перенести основные функции на отдельные серверы. Чат, инвентарь и аукционы - это в значительной степени независимые функции, и их необязательно, например, размещать на одном сервере. Чтобы предотвратить определенные эксплойты в игровом процессе, вам понадобится служба обмена сообщениями между вашими серверами, и ни одна из основных веб-платформ не обеспечивает этого.
Ахиллесова пята веб-фреймворков PHP - это отсутствие постоянной памяти. CakePHP работает так медленно, потому что весь веб-фреймворк должен повторно инициализироваться для каждого запроса. Кеши кодов операций, такие как APC, только избавляют от необходимости анализировать исходные файлы PHP.
Я настоятельно рекомендую вам рассмотреть веб-фреймворки на других языках. Python, Ruby и Java - отличный выбор. Все эти языки будут работать на недорогих серверах Linux и не страдают от вышеуказанных ограничений.
Codeigniter - потрясающий фреймворк, пользующийся хорошей поддержкой сообщества и хорошо масштабируемый. Кроме того, вам не нужен доступ к оболочке для развертывания приложения. А интеграция MVC упрощает написание приложений.
Я вижу, вы смотрели на Zend и CakePHP, но я хотел бы указать вам в другом направлении.
Kohana - это то, что я бы использовал, если бы я все еще использовал PHP. Они взяли CodeIgniter и разделили его таким образом, чтобы php чувствовал себя гораздо менее файловым и гораздо более объектным. У них есть отличное решение для создания шаблонов, а также есть модули для всего, что вы обсуждали, кроме ACL (я не знаю, что это такое, так что, возможно, он у них есть).
В любом случае, я думаю, это стоит проверить.
О масштабируемости
Я заметил некоторые разговоры о скорости. Хотя я думаю, что Kohana очень быстро справился с задачей, я не думаю, что это связано с фреймворком в большей степени, чем с другими инструментами.
Во-первых, я увеличил скорость работы многих своих php-приложений, отказавшись от apache для nginx. Nginx с PHP, работающим как fastcgi, намного легче и действительно увеличивает время загрузки для http://ukclasslist.com . Мы по-прежнему используем apache локально, и копия, работающая на нашем сервере, работает быстрее, чем наша локальная версия.
Если у вас все еще возникают проблемы со скоростью, особенно с захватом больших блоков данных, вам следует заглянуть в кэш памяти.
Фактически, вы можете использовать CakePHP и Zend Framework одновременно. Фреймворк Zend немного ближе к библиотеке, чем что-либо еще. Так что использовать библиотеки Zend в Cakephp несложно. Лучший из двух миров.
вот пример компонента или контроллера для этого.
Также похоже, что проформа была бы очень важна. вам может показаться интересным http://avnetlabs.com/php/php-framework-comparison-benchmarks
Что касается масштабируемости , возможно, этот вопрос может помочь
Я фанат Коханы. До этого у меня был CodeIgniter, а Kohana (как я это вижу) - это, по сути, все хорошее в CodeIgniter без особых ограничений. v3 - это последняя версия Kohana, более надежная и гибкая, чем v2.
Производительность зависит от того, как вы используете фреймворк, и от его собственных сильных и слабых сторон по сравнению с другими фреймворками. Лучше всего использовать APC (скоро станет частью PHP 6) или eAccellerator для кеширования скомпилированных сценариев PHP.
Во-первых, это хороший ресурс по PHP фреймворкам:
Вы можете легко получить представление о них, так как там есть хорошее сравнение.
Во-вторых, я бы настоятельно рекомендовал вам просмотреть этот отличный учебник по MVC на phpro.org:
http://www.phpro.org/tutorials/Model-View-Controller-MVC.html
Вот хорошая отправная точка http://phpro.org/tutorials/Model-View-Controller-MVC.html .
Попробуйте Агави . Просто лучший фреймворк PHP. У вас есть все, что вам нужно, и вы можете просто расширить, настроить или изменить реализацию основных классов через factory.
Свободно определяемые среды (разработка, подготовка, производство и т. Д.), Контексты (Интернет, SOAP, консоль и т. Д.), Типы вывода (настраиваемый набор средств визуализации с макетами / слоями / слотами / параметрами / заголовками HTTP), например HTML, JSON. , PDF или $ WHATEVER и просто лучшая система маршрутизации.
Использует XML для конфигурации и фактически выполняет USE его с родительскими файлами, проверкой схемы и XIncludes. Хорошая система проверки ввода со строгой проверкой по умолчанию (и не только для GET / POST, но и для всех других вводов, таких как заголовки, файлы и файлы cookie). Добавьте некоторые тонкости i18n / i10n и встроенную магию SOAP, и вы получите самую гибкую и мощную доступную инфраструктуру PHP (не только веб-платформу).
Немного мало документации, но она имеет единственную истинную реализацию MVC по сравнению с Kohana, CakePHP, Zend и всеми другими фреймворками ... просто взгляните на нее и задайте вопросы по IRC или список рассылки пользователей. После крутого обучения вы в последний раз изучали другие (PHP) фреймворки в течение длительного времени. : -)