我们有一个旧的Facebook应用程序,运行顺利用本机php编写。
本月我们决定在zend-framework 2中重写它。昨天,在切换到新应用程序后,它崩溃了我们的服务器,出现了大量的内存不足错误。所以我们转回旧应用程序。
我安装了xdebug来分析应用程序。使用memory_get_peak_usage()函数我发现内存使用率很高。
在旧版应用中,静态页面仅使用1 MB内存。但新的大约在同一页面上使用7-8 mb。
这是webgrind的前两行:
Function Invocation Count Total Self Cost Total Inclusive Cost
Composer\Autoload\ClassLoader->loadClass 224 23.31 47.20
Composer\Autoload\ClassLoader->findFile 224 9.57 10.23
还尝试了apache的ab工具
ab -n 50 -c 5 -C PHPSESSID=SESSIONID http://myhost.com
结果是:
Percentage of the requests served within a certain time (ms)
50% 368
66% 506
75% 601
80% 666
90% 1073
95% 1812
98% 2278
99% 2278
100% 2278 (longest request)
所有这些都来自生产服务器而不是localhost。
单页正常是7-8 MB吗?如果没有,我该如何减少它?我应该在zf2还是作曲家中寻找它?
如果需要,我可以提供代码示例。谢谢。
答案 0 :(得分:2)
当您将解决方案从本机迁移到Zend时,您必须了解Zend的工作方式。
Zend由许多类组成,当您使用Objects而不是native / light结构时,使用的内存会增加。
要改善内存使用,请检查您的代码并执行以下操作:
跳这有帮助。
答案 1 :(得分:0)
我花了一天时间来解决问题。试过xdebug,xhprof。代码中没有问题。
我们切换回2.0.0并解决了问题。我不知道新版本有什么问题,现在坚持使用2.0.0。
整体内存使用量约为4mb,没有崩溃。
composer.json:
"zendframework/zendframework": "2.0.0",