我在1个月前将Zend Framework添加到我的php项目中。我正在使用Zend_Measure和Zend_Locale将数字格式化为良好的语言环境。
我正在使用带有APC和Zend Framework 1.11的php 5.3。
我的数据库中导出原始数据存在一个主要问题。排除可忽略不计的mysql查询时间,带有记录格式的php导出每1000条记录需要3.5秒。所有这些时间都花在Zend_Locale_Format::toNumber()
上。我怎样才能提高性能呢?
此基准测试已在我自己的计算机上完成(Macbook pro i5)。 在我们的生产服务器上,每1000条记录需要70秒!该服务器是一个2GB的rackspaceCloud云服务器,带有centos,只运行我们的Web应用程序。
macbook和rackspace服务器性能之间存在20个因素。我的macbook是如此强大吗?我不这么认为......
更新
在进行一些分析后,似乎瓶颈是Zend_Cache_Backend_File->_fileGetContents
。它默认使用Zend_Cache_Backend_File。如何配置Zend Framework以使用Zend_Cache_Backend_Apc
或Zend_Cache_Backend_TwoLevels
?它可能会改善性能......
答案 0 :(得分:5)
您是否为Zend_Locale
设置了全局缓存?检查此doc page并滚动到底部。
另外,请检查您的APC设置。我自己不使用APC,但是当缓存大小太小时,XCache会出现性能问题。这也可能是您配置的问题。
配置Zend_Locale
使用的缓存和Zend_Local_Format
使用Zend_Locale::setCache($cache)
和Zend_Locale_Format::setOptions(array('cache' => $adapter))
。可以在手册中找到。