Крупные пользовательские приложения для опросов / отчетности - лучшая практика - PullRequest
4 голосов
/ 28 октября 2008

Ситуация

Когда вы изучаете общественные науки, вы часто сталкиваетесь с необходимостью проведения онлайн-опросов (сбор научных данных в Интернете). Это одна из главных причин, почему я начал с PHP .

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

Теперь я вижу себя перед лицом сложного приложения для сбора данных и составления отчетов, которое становится медленным и недоступным .

Одна из моих платформ имеет до 100 новых пользователей в день и объединяет / сообщает данные нескольких тысяч пользователей раз сотни элементов данных времена десятки уровней иерархии .

Мои вопросы

  • PHP / mysql - это еще путь?
  • Может ли фреймворк наподобие codeIgnitor стать основой для такого приложения или я должен все разрабатывать с нуля?
  • знаете ли вы какую-либо конкретную структуру опроса, которую я мог бы использовать в качестве основы?

Ответы [ 3 ]

2 голосов
/ 28 октября 2008

PHP / mysql - это еще путь?

Да, PHP / MYSQL (LAMP) успешно используется на сотнях сайтов с экспоненциально большей базой пользователей, чем у вас.

Может ли фреймворк наподобие codeIgnitor стать основой для такого приложения или я должен все разрабатывать с нуля?

Нетривиальные PHP-сайты, созданные без фреймворка (или пользовательского фреймворка), имеют тенденцию работать быстро. Фреймворки PHP теперь являются нормой для начала, я лично рекомендую Zend Framework . Это очень надежная структура, предоставляющая инструменты для многих распространенных задач PHP (замена / усовершенствования для Database, Date, JSON, RPC, REST) ​​и организованная методология разработки веб-приложений: MVC с использованием Zend_Controller .

знаете ли вы какую-либо конкретную структуру опроса, которую я мог бы использовать в качестве основы?

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

2 голосов
/ 28 октября 2008

PHP / mysql должен подойти для этого масштаба, но вы должны настроить его и предоставить ему достаточно ресурсов.

Например, если ваша схема не продумана, вы столкнетесь со всевозможными стенами производительности. То, как ваши данные хранятся и индексируются, является, вероятно, самым важным фактором для эффективности отчетов. У меня было 60-100 ГБ данных в MySQL с временем отклика менее секунды для слегка сложных запросов. Важными факторами были:

  • мои данные были проиндексированы для того, как я их использовал
  • запросы, которые я использовал, были продуманы, протестированы и оптимизированы

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

И, наконец, есть один прием, который мы все используем, когда наши наборы данных становятся большими: генерируйте свои отчеты на cron, а не по запросу. Если для генерации флэш-графика требуется 2 минуты, каждые 5 минут запускайте cron для генерации данных. Поместите его в файл где-нибудь и выложите это в графическое программное обеспечение вместо того, чтобы запрашивать базу данных в реальном времени.

0 голосов
/ 07 февраля 2015

Вы должны заглянуть в приложение с открытым исходным кодом Limesurvey.

Он использует PHP / Mysql, поэтому он отвечает на один из ваших вопросов относительно пригодности PHP для этой задачи.

Предыдущая версия Limesurvey была написана в CodeIgniter, но руководитель проекта изменил структуру Yii после неопределенности и путаницы в отношении лицензий CodeIgniter.

Ваш третий вопрос был дан ответ выше.

Рекомендации: https://www.limesurvey.org/

...