Крупные настраиваемые приложения для опросов/отчетов — передовой опыт

Ситуация

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

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

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

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

Мои вопросы

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

person markus    schedule 28.10.2008    source источник
comment
Это мой собственный вопрос, он ОЧЕНЬ старый, и я был ОЧЕНЬ глупым 7 лет назад :) как и все мы. Я на самом деле смущен, и я хотел бы, чтобы это было удалено.   -  person markus    schedule 11.02.2015


Ответы (3)


PHP/mysql еще впереди?

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

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

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

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

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

person Jake McGraw    schedule 28.10.2008

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

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

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

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

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

person Gary Richardson    schedule 28.10.2008

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

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

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

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

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

person crafter    schedule 07.02.2015