【发布时间】:2014-02-24 03:41:56
【问题描述】:
我正在处理一个 CakePHP 项目。最近我在项目中添加了 UnitTests。我的系统配置是:
- PHP 单元 3.7.24。
- 蛋糕版本 2.4.2。
- 具有 4 核 Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz 的 VM 服务器
- 9.1-RC3 FreeBSD。
但我的一项测试运行非常缓慢。大约需要 37 分钟才能完成。我在这个测试中使用了 10 个夹具,但我没有从另一个数据库加载记录, 因此我的夹具类只包含这一行:
public $import = array('model' => 'Model', 'records' => false);
测试包含三个 testAction() 调用。其中两个跑得快,第三个跑得不快。第三个调用运行一个控制器操作,它执行以下操作:
- 对包含 ~ 2 个条目的表运行两个查找查询
- 使用 ifconfig 获取 webvserver ip
- 通过 ssh 连接到另一个虚拟机(使用 phpseclib)
- 使用 scp 将 3.6 MB 文件从网络服务器复制到 vm
- 运行 python 脚本
- 将它的 json 输出复制回网络服务器
- 将json信息保存在webserver的数据库中(
- 移除vm上的python脚本结果
当我通过单击 Web 界面中的图标来运行相同的控制器操作时,它会在
- 我已经尝试设置 Configure::write('debug', 0);,但没有任何效果。
- 我根据“cake test”命令在控制台中运行了测试,但没有任何性能提升。
- 我取消了 Model->尽可能递归以获取所有信息
知道如何固定这个 UnitTest 吗?我的其他单元测试只需要
【问题讨论】:
-
就像 Ilie Pandia 所说,最好知道脚本的哪一部分导致了速度变慢。是“运行两个查找查询”还是“使用 ifconfig 获取 webvserver ip”或其他?
标签: cakephp ssh phpunit fixtures phpseclib