PHP Framework вопрос - PullRequest
       7

PHP Framework вопрос

5 голосов
/ 04 марта 2010

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

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

  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 в качестве утилиты "framework", хотя это всего лишь набор библиотек (хотя, как мне уже сказали, некоторые хорошие).
  3. Текущие претенденты PHP: CakePHP, Kohana, Zend only.

Ответы [ 8 ]

4 голосов
/ 04 марта 2010

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

http://kohanaphp.org/

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

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

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

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

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

3 голосов
/ 04 марта 2010

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

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

2 голосов
/ 19 марта 2010

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

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

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

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

2 голосов
/ 09 марта 2010

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

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

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

0 голосов
/ 04 марта 2010

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

0 голосов
/ 04 марта 2010

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

Вот пример компонента или контроллера, чтобы сделать это.

Кроме того, звучит так, как будто бы это было очень важно. вы можете найти это интересным http://avnetlabs.com/php/php-framework-comparison-benchmarks

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

0 голосов
/ 04 марта 2010

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

0 голосов
/ 04 марта 2010

Прежде всего, это хороший ресурс по фреймворкам PHP:

http://www.phpframeworks.com/

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...