Вопрос о структуре PHP

В настоящее время я работаю над браузером - на основе MMO и выбрали стек LAMP из-за чрезвычайно низкой стоимости для начала производства (по сравнению с Windows + IIS + ASP.NET/C# + SQL Server, хотя у меня есть MSDN Universal). Однако мне понадобится PHP-фреймворк для это непростая задача. Я не ограничен ничем, кроме возможности работать в Linux, так как я буду использовать выделенное решение для облачного хостинга (и образ VMWare для разработки) и c и настройте его по мере необходимости.

В произвольном порядке:

  1. Он должен легко масштабироваться; это критическое .Если игра станет стабильно успешной, она в конечном итоге перерастет сервер, превышающий то, что предоставляет хост, и ее придется перенести на несколько серверов с балансировкой нагрузки. Крайне важно, чтобы это можно было сделать с минимальными усилиями. Я знаю, что для этого может потребоваться строгое соблюдение соглашений, поэтому, если вы знаете какие-либо условия для предлагаемой вами структуры, объясните, что может потребоваться.
  2. Он должен предоставлять модули для всех основных задач: аутентификации, ACL, доступа к базе данных, MVC и так далее. Один или два недостающих модуля - это нормально, если их можно легко написать и интегрировать.
  3. Он должен поддерживать интернационализацию. Я думаю, что любой веб-инфраструктуре нет оправдания, если она не предоставляет средства для перевода приложения и переключения между языками без особых усилий со стороны программиста.
  4. Должен иметь очень хорошую поддержку сообщества, а также, желательно, коммерческую поддержку. Да, я знаю, что QCodo / QCubed настолько хорош, но он недостаточно зрел для этой задачи.
  5. Требуется плавная поддержка AJAX. Поставляется ли фреймворк с виджетами с поддержкой AJAX или имеет простой способ добавления AJAX, не имеет значения, если AJAX легко реализуем. Я планирую использовать jQuery + Dojo или один из них отдельно - не совсем уверен.
  6. Автоматическое выполнение чего-либо, когда это улучшает читаемость и избавляет от больших усилий, было бы особенно хорошо, если оно в целом надежно и не мешает другим требованиям. Похоже, это случай CakePHP.

Я прочитал много сравнений и знаю, что это действительно жаркие споры. Общий ответ - «попробуйте и убедитесь сами, что вам подходит».Однако я не могу сказать, что это легко для этой задачи, и я прошу вас поделиться опытом создания приложений с аналогичными требованиями. Пока что я привязан к Zend и CakePHP по общим критериям, однако все известные фреймворки в той или иной мере предлагают одни и те же функциональные возможности, но с разными подходами, каждый со своими преимуществами и недостатками.

Правки:

  1. Я новичок в MVC, однако я готов изучить его, и меня не волнует, будет ли структура проще для тех, кто плохо знаком с MVC. У меня много времени, чтобы изучить MVC и любые другие архитектуры (или как они там называются), которые вы порекомендуете.
  2. Я буду использовать Zend в качестве «фреймворка» утилит, даже если это всего лишь набор библиотек (хотя, как мне сказали, есть несколько хороших).
  3. Текущие претенденты на PHP: только CakePHP, Kohana, Zend.
5
задан CMircea 9 March 2010 в 19:26
поделиться

8 ответов

Масштабирование - не та проблема, которую вы можете ожидать от веб-фреймворка. Даже успешные MMO с почти безграничным бюджетом прибегали к сегментированию и инстансированию. Лучший подход - разработать модульное приложение. По мере необходимости вы можете перенести основные функции на отдельные серверы. Чат, инвентарь и аукционы - это в значительной степени независимые функции, и их необязательно, например, размещать на одном сервере. Чтобы предотвратить определенные эксплойты в игровом процессе, вам понадобится служба обмена сообщениями между вашими серверами, и ни одна из основных веб-платформ не обеспечивает этого.

Ахиллесова пята веб-фреймворков PHP - это отсутствие постоянной памяти. CakePHP работает так медленно, потому что весь веб-фреймворк должен повторно инициализироваться для каждого запроса. Кеши кодов операций, такие как APC, только избавляют от необходимости анализировать исходные файлы PHP.

Я настоятельно рекомендую вам рассмотреть веб-фреймворки на других языках. Python, Ruby и Java - отличный выбор. Все эти языки будут работать на недорогих серверах Linux и не страдают от вышеуказанных ограничений.

2
ответ дан 13 December 2019 в 19:25
поделиться

Codeigniter - потрясающий фреймворк, пользующийся хорошей поддержкой сообщества и хорошо масштабируемый. Кроме того, вам не нужен доступ к оболочке для развертывания приложения. А интеграция MVC упрощает написание приложений.

0
ответ дан 13 December 2019 в 19:25
поделиться

Я вижу, вы смотрели на Zend и CakePHP, но я хотел бы указать вам в другом направлении.

http://kohanaphp.org/

Kohana - это то, что я бы использовал, если бы я все еще использовал PHP. Они взяли CodeIgniter и разделили его таким образом, чтобы php чувствовал себя гораздо менее файловым и гораздо более объектным. У них есть отличное решение для создания шаблонов, а также есть модули для всего, что вы обсуждали, кроме ACL (я не знаю, что это такое, так что, возможно, он у них есть).

В любом случае, я думаю, это стоит проверить.

О масштабируемости
Я заметил некоторые разговоры о скорости. Хотя я думаю, что Kohana очень быстро справился с задачей, я не думаю, что это связано с фреймворком в большей степени, чем с другими инструментами.

Во-первых, я увеличил скорость работы многих своих php-приложений, отказавшись от apache для nginx. Nginx с PHP, работающим как fastcgi, намного легче и действительно увеличивает время загрузки для http://ukclasslist.com . Мы по-прежнему используем apache локально, и копия, работающая на нашем сервере, работает быстрее, чем наша локальная версия.

Если у вас все еще возникают проблемы со скоростью, особенно с захватом больших блоков данных, вам следует заглянуть в кэш памяти.

4
ответ дан 13 December 2019 в 19:25
поделиться

Фактически, вы можете использовать CakePHP и Zend Framework одновременно. Фреймворк Zend немного ближе к библиотеке, чем что-либо еще. Так что использовать библиотеки Zend в Cakephp несложно. Лучший из двух миров.

вот пример компонента или контроллера для этого.

Также похоже, что проформа была бы очень важна. вам может показаться интересным http://avnetlabs.com/php/php-framework-comparison-benchmarks

Что касается масштабируемости , возможно, этот вопрос может помочь

0
ответ дан 13 December 2019 в 19:25
поделиться

Я фанат Коханы. До этого у меня был CodeIgniter, а Kohana (как я это вижу) - это, по сути, все хорошее в CodeIgniter без особых ограничений. v3 - это последняя версия Kohana, более надежная и гибкая, чем v2.

Производительность зависит от того, как вы используете фреймворк, и от его собственных сильных и слабых сторон по сравнению с другими фреймворками. Лучше всего использовать APC (скоро станет частью PHP 6) или eAccellerator для кеширования скомпилированных сценариев PHP.

3
ответ дан 13 December 2019 в 19:25
поделиться

Во-первых, это хороший ресурс по PHP фреймворкам:

http://www.phpframeworks.com/

Вы можете легко получить представление о них, так как там есть хорошее сравнение.

Во-вторых, я бы настоятельно рекомендовал вам просмотреть этот отличный учебник по MVC на phpro.org:

http://www.phpro.org/tutorials/Model-View-Controller-MVC.html

0
ответ дан 13 December 2019 в 19:25
поделиться

Вот хорошая отправная точка http://phpro.org/tutorials/Model-View-Controller-MVC.html .

0
ответ дан 13 December 2019 в 19:25
поделиться

Попробуйте Агави . Просто лучший фреймворк PHP. У вас есть все, что вам нужно, и вы можете просто расширить, настроить или изменить реализацию основных классов через factory.

Свободно определяемые среды (разработка, подготовка, производство и т. Д.), Контексты (Интернет, SOAP, консоль и т. Д.), Типы вывода (настраиваемый набор средств визуализации с макетами / слоями / слотами / параметрами / заголовками HTTP), например HTML, JSON. , PDF или $ WHATEVER и просто лучшая система маршрутизации.

Использует XML для конфигурации и фактически выполняет USE его с родительскими файлами, проверкой схемы и XIncludes. Хорошая система проверки ввода со строгой проверкой по умолчанию (и не только для GET / POST, но и для всех других вводов, таких как заголовки, файлы и файлы cookie). Добавьте некоторые тонкости i18n / i10n и встроенную магию SOAP, и вы получите самую гибкую и мощную доступную инфраструктуру PHP (не только веб-платформу).

Немного мало документации, но она имеет единственную истинную реализацию MVC по сравнению с Kohana, CakePHP, Zend и всеми другими фреймворками ... просто взгляните на нее и задайте вопросы по IRC или список рассылки пользователей. После крутого обучения вы в последний раз изучали другие (PHP) фреймворки в течение длительного времени. : -)

2
ответ дан 13 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: