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

4

情况

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

最近,这些调查应用程序越来越复杂。增加了很多复杂性:报告(flash图表,PDF生成),数据聚合,不同级别的聚合(例如公司单位),涉及公司的问卷模块选择等。

现在,我面临着一个复杂的数据收集和报告应用程序,这个应用程序变得越来越慢且难以维护

我的一个平台每天有多达100个新用户,并汇总/报告数千个用户数百个数据项数十个层次结构级别的数据。

我的问题

  • PHP/mysql仍然是一种可行的方法吗?
  • 像codeIgnitor这样的框架是否可以成为这种应用程序的基础,还是应该从头开发所有内容?
  • 您知道任何可以用作基础的调查特定框架吗?

这是我的问题,非常古老,7年前的我非常愚蠢 :) 就像我们所有人一样。我实际上感到很尴尬,希望能够删除它。 - markus
3个回答

2

对于这个规模的项目,PHP/mysql应该是足够的,但你必须对其进行调整并提供足够的资源。

例如,如果你的架构没有经过深思熟虑,你将会遇到各种性能问题。数据的存储和索引方式可能是报告性能最重要的因素。我曾经在mysql中拥有60-100GB的数据,并且对于稍微复杂的查询也能在几秒钟内得到响应。重要的因素是:

  • 我的数据被索引以适应我使用的方式
  • 我使用的查询经过了深思熟虑、测试和优化

接下来,你必须为MySQL服务器提供足够的资源。如果你在共享托管服务器上运行应用程序并且使用默认设置,则mysql可能无法处理超过几百MB的数据。确保你的缓存已调整好,你的表类型对你的应用程序有意义,并且你有足够的内存和快速的磁盘以满足你的性能需求。

最后,当我们的数据集变得庞大时,我们都会使用一个技巧:定期生成报告而不是按需生成报告。如果生成Flash图表需要2分钟,那么每5分钟运行一次cron来生成数据。将其存储在某个文件中,然后输出到图形软件中,而不是实时查询数据库。


2

PHP/MySQL仍然是一种可行的选择吗?

是的,PHP/MySQL(LAMP)已经成功地应用在许多用户量比您更大的网站上。

像CodeIgniter这样的框架能否成为这样一个应用程序的基础,还是我应该从头开始开发?

没有框架(或自定义框架)构建的非平凡PHP站点很容易变得混乱。现在使用PHP框架是常态,我个人推荐Zend Framework。它是一个非常强大的框架,提供了许多常见PHP任务(替换/增强数据库、日期、JSON、RPC、REST)的工具和有组织的Web应用程序开发方法:MVC使用Zend_Controller

你知道我可以用作基础的任何调查特定框架吗?

我不知道有任何这样的框架,但您可以尝试使用Zend_Form从配置文件自动生成表单元素(类型、过滤器、净化器、验证器)。


0

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

它使用PHP/Mysql,因此解决了你关于PHP是否适合这项任务的疑问之一。

Limesurvey的早期版本是用CodeIgniter编写的,但由于对CodeIgniter许可证的不确定性和混淆,项目负责人改用Yii框架。

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

参考资料: https://www.limesurvey.org/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接