Большие пользовательские приложения для проведения опросов / составления отчетов - лучшая практика

StackOverflow https://stackoverflow.com/questions/243898

  •  04-07-2019
  •  | 
  •  

Вопрос

Ситуация

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

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

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

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

Мои вопросы

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

Решение

является ли PHP / mysql все еще возможным вариантом?

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

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

Ссылки :https://www.limesurvey.org/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top