Zend_Date太慢了,真的很慢

时间:2011-06-02 02:39:21

标签: php zend-framework zend-date

这是我的代码:

$frontendOptions = array('lifeTime' => 10);
$backendOptions = array('cacheDir' => '../tmp/');    

$cache = Zend_Cache::factory(   'Core',
                                'File',
                                $frontendOptions,
                                $backendOptions);

$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);

$locale = new Zend_Locale('es_ES');
Zend_Registry::set('Zend_Locale', $locale);
Zend_Locale::setCache($cache);

$date = new Zend_Date('11-03-2010');

当我尝试创建Zend_Date对象时,脚本变慢。

我在MAMP(Mac / Snow Leopard)上使用Zend 1.11.5。

有谁知道我怎样才能加快这个速度?

2 个答案:

答案 0 :(得分:4)

问题是你的缓存生命周期真的很低。 Zend_Date使用Zend_Locale,它解析一些XML(不是很小的),这需要花费大量的时间。创建具有极长生命周期的特殊缓存实例(或者更好地将其与文件的修改时间联系起来)并将其设置为Zend_Date和Zend_Locale。这应该可以大大加快速度。但是,使用Zend_Date说明...在订单列表中回显日期并不是一个好主意。你可以使用

date('d.m.Y', strtotime($timeFromDb))

在使用日期进行日期计算或其他高级操作时,您应该使用Zend_Date。不是为了简单的选择,除非你需要能够在任何语言环境中实际回应它:)

答案 1 :(得分:0)

Zend_Date和其他一些Zend类已知很慢。您可以使用缓存来加速对Zend_Date的后续调用:

$date = new Zend_Date(...);  
 ....  
$cachedDate = new Cache($date);  
print $cachedDate->toString();

我知道这听起来很简单,但如果您只需要格式化的常规日期,请使用php's built-in date object。我保证你会看到一个主要的速度差异。

<强>更新

如果确实想要调整课程以提高效果,this post可以应用几个补丁/调整。