代码之家  ›  专栏  ›  技术社区  ›  markus

大型自定义调查/报告应用程序-最佳实践

  •  4
  • markus  · 技术社区  · 16 年前

    形势

    当你学习社会科学时,你经常会面临在线调查(在线收集科学数据)的需要。这是我开始的主要原因之一 PHP 首先。

    最近,这些调查应用程序不断增长。一 非常复杂 已添加:报告(闪存图表、PDF生成)、数据聚合、不同聚合级别(如公司单位)、所涉及公司的问卷模块选择等。

    现在,我看到自己面临着一个复杂的数据收集和报告应用程序,它是 变得越来越慢,越来越不可维护 .

    我的一个平台每天有多达100个新用户,并汇总/报告多个 千人用户 时代 数百个数据项 时代 几十个层次 .

    我的问题

    • php/mysql仍然是一种方法吗?
    • 像codeignor这样的框架可以作为这种应用程序的基础吗,或者我应该从头开始开发所有东西吗?
    • 你知道我可以用什么样的调查框架作为基础吗?
    3 回复  |  直到 10 年前
        1
  •  2
  •   davetron5000    16 年前

    php/mysql仍然是一种方法吗?

    是的,php/mysql(lamp)已经成功地应用于数百个用户基数指数级大于您的网站。

    像codeignor这样的框架可以作为这种应用程序的基础吗,或者我应该从头开始开发所有东西吗?

    在没有框架(或自定义框架)的情况下构建的PHP站点往往会变得草率。PHP框架现在是入门的标准,我个人建议 Zend Framework . 它是一个非常强大的框架,为许多常见的PHP任务(数据库、日期、JSON、RPC、REST的替换/增强)提供工具,并为Web应用程序开发提供有组织的方法: MVC 使用 Zend_Controller .

    你知道我可以用什么样的调查框架作为基础吗?

    我不知道,但你可能想用 Zend_Form 从配置文件自动生成表单元素(类型、筛选器、消毒剂、验证程序)。

        2
  •  2
  •   Gary Richardson    16 年前

    对于这种规模,php/mysql应该是可以的,但您必须对其进行优化,并为其提供足够的资源。

    例如,如果您的模式没有被考虑清楚,您将遇到各种性能障碍。如何存储和索引数据可能是报表性能的最重要因素。我在MySQL中有60-100GB的数据,对于稍微复杂的查询,响应时间为次秒。重要的因素是:

    • 我的数据以我使用它的方式编入索引
    • 我使用的查询经过了思考、测试和优化

    接下来,您必须给MySQL服务器足够的资源。如果你在一个共享的托管服务器上运行你的应用程序,并且你正在使用开箱即用的设置,那么使用超过几百MB的数据,MySQL可能不会运行得很好。确保调优了缓存,表类型对应用程序有意义,并且有足够的内存和足够快的磁盘来满足性能需求。

    最后,当我们的数据集变大时,我们都会用到一个技巧:在cron上生成报告,而不是按需生成报告。如果生成闪存图需要2分钟,则每5分钟运行一次cron以生成数据。把它放在某个文件中,然后把它输出到绘图软件中,而不是实时查询数据库。

        3
  •  0
  •   crafter    10 年前

    您应该研究一下开源Limesurvey应用程序。

    它使用php/mysql,这样就可以解决关于php适合任务的一个问题。

    Limesurvey的前一个版本是用codeigner编写的,但是由于对codeigner许可证的不确定性和混淆,项目导致了到yii框架的转变。

    你的第三个问题已在上面回答。

    参考文献: https://www.limesurvey.org/