4

情况

当您学习社会科学时,您经常会遇到在线调查(在线科学数据收集)的需求。这就是我最初使用PHP的主要原因之一。

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

现在,我发现自己面临着一个复杂的数据收集和报告应用程序,该应用程序变得缓慢且难以维护

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

我的问题

  • PHP/mysql 是否还有路要走?
  • 像 codeIgnitor 这样的框架可以作为此类应用程序的基础还是我应该从头开始开发所有东西?
  • 您知道我可以用作基础的任何类型的调查特定框架吗?
4

3 回答 3

2

PHP/mysql 对于这个规模应该没问题,但你必须调整它并给它足够的资源。

例如,如果您的架构没有经过深思熟虑,您将遇到各种性能障碍。数据的存储和索引方式可能是影响报告性能的最重要因素。我在 mysql 中有 60-100gb 的数据,对于轻度复杂的查询具有亚秒级的响应时间。重要的因素是:

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

接下来,您必须为您的 MySQL 服务器提供足够的资源。如果您在共享托管服务器上运行您的应用程序并且您使用的是开箱即​​用的设置,那么 mysql 可能无法在超过几百 mb 的数据时运行良好。确保您的缓存经过调整,您的表类型对您的应用程序有意义,并且您有足够的内存和足够快的磁盘来满足您的性能需求。

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

于 2008-10-28T17:01:58.343 回答
2

PHP/mysql 是否还有路要走?

是的,PHP/MYSQL (LAMP) 已成功用于数百个用户群比您的用户群大得多的站点。

像 codeIgnitor 这样的框架可以作为此类应用程序的基础还是我应该从头开始开发所有东西?

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

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

我不知道,但您可能想尝试使用Zend_Form从配置文件中自动生成表单元素(类型、过滤器、消毒剂、验证器)。

于 2008-10-28T17:17:35.363 回答
0

您应该查看开源 Limesurvey 应用程序。

它使用 PHP/Mysql,因此可以解决您关于 PHP 是否适合该任务的问题之一。

Limesurvey 之前的版本是用 CodeIgniter 编写的,但是在对 CodeIgniter 许可证的不确定和混淆之后,项目负责人更改为 Yii 框架。

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

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

于 2015-02-07T13:57:30.953 回答