Масштабируемость приложения php - PullRequest
3 голосов
/ 22 декабря 2010

Я построил свое приложение, используя cakephp. Работает нормально. Мое приложение все еще находится в бета-версии с 3000 бета-пользователей (приглашает на основе). Я хочу расширить его для большей базы конечных пользователей.

Несколько вещей о моем приложении.

1) Я использую таблицу базы данных MySQL около 25000 записей. 2) Несколько моделей и множество множественных отношений hasMany и ownTo и HABTM

Первый вопрос. 1) Как я могу улучшить производительность своего сайта. 2) Каков предел результата от запросов к базе данных (10 с). 4) Должен ли я переместить приложение на более новую технологию или платформу.

Количество записей и связей растет.

Я запустил приложение в cakephp менее трех месяцев назад с небольшими (MVC) знаниями. Это удивительно легко создавать и тестировать приложения. Я бы порекомендовал его друзьям в любое время.

Я ценю любую помощь.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Как я могу улучшить производительность своего сайта?

Трудно сказать, не зная, где находится узкое место.Один из подходов заключается в следующем:

  1. Начните с оптимизации запросов SQL, включите медленное ведение журнала запросов и изучите их, правильно индексируйте столбцы и измените конфигурацию сервера SQL, если это необходимо.

  2. Профиль Выполнение PHP, анализ отчета и не забудьте рефакторинг кода, где это необходимо.

  3. Введение в кеширование, плоские файлы, кеширование SQL, APC , Memcache и т. Д. (Только не используйте их все вместе :)

  4. Оптимизация конфигурации сервера, включая программное и аппаратное обеспечение.

  5. Переход на несколько серверов.

Каков предел результатов для запросов к базе данных (10 с)?

Вы имеете в виду время выполнения?Как можно быстрее :) Но опять же, зависит от самого запроса.Если запрос выполняется один раз в день, он может быть медленнее, чем если бы он выполнялся с каждым запросом.Время зависит от первого вопроса / ответа выше.

Должен ли я переместить приложение на более новую технологию или структуру?

На этот вопрос трудно ответить.Опять же, зависит от того, в чем заключаются проблемы, и можете ли вы их выявить и устранить.Если вы можете решить их путем оптимизации запросов и базы данных, кэширования и т. Д., То проблема не в структуре.Я настоятельно советую тщательно обдумать это, прежде чем переходить на другую технологию или переписывать код.

1 голос
/ 22 декабря 2010

Быстрый поиск в Google привел к появлению следующих сайтов, все из которых посвящены значительному ускорению CakePHP.Кроме того, вот мои мысли о скорости Cake:

  1. Убедитесь, что вы используете последнюю версию Cake.Обновление с Cake 1.2 до 1.3 дало примерно 20% прироста скорости для моего самого крупного приложения.
  2. Убедитесь, что у вас включено кэширование (для большинства приложений с интенсивным чтением это поможет в широком масштабе).
  3. Если у вас МНОГО моделей, которые связаны, но используются редко, попробуйте загружать эти модели лениво.

Помните, что Cake на самом деле не создан для скорости.Другие ответы здесь хороши для общих ситуаций, но с CakePHP узким местом обычно является веб-слой.Поэтому один (довольно простой) способ масштабирования - это загрузка ваших страниц через прокси-сервер, который передает запросы в ферму серверной обработки.

Кроме того, я настоятельно рекомендую вам профилировать свой код.Это означает использование IDE, такой как Zend, где вы можете вставить точки останова, чтобы определить медленные участки вашего кода.Как минимум, установите панель инструментов отладки Cake, которая покажет вам время выполнения для основных разделов вашего приложения (загрузка обработчика запросов, выполнение контроллера, просмотр времени рендеринга и т. Д.)

Результаты поиска Google по "оптимизации"CakePHP для скорости ":

...