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.
Я использую Zend 1.11.5 на MAMP (Mac / Snow Leopard).
У кого-нибудь есть идеи, как я могу ускорить это?
2 ответа
Проблема в том, что время жизни вашего кеша очень мало. Zend_Date использует Zend_Locale, который анализирует некоторые XML (не очень маленькие), что занимает много-много времени. Создайте специальный экземпляр кеша с чрезвычайно долгим временем жизни (или лучше привязайте его к измененному времени файлов) и установите для него значение Zend_Date и Zend_Locale. Это должно значительно ускорить процесс. Но не стоит использовать Zend_Date для, скажем, повторения даты в списке заказов. Ты можешь использовать
date('d.m.Y', strtotime($timeFromDb))
Вы должны использовать Zend_Date, когда выполняете вычисления даты или другие сложные вещи с датами. Не для простого выбора, если только вам не нужна способность отображать его практически в любой локали:)
Zend_Date и некоторые другие классы Zend работают медленно. Вы можете ускорить последующие вызовы Zend_Date, используя ваш кеш:
$date = new Zend_Date(...);
....
$cachedDate = new Cache($date);
print $cachedDate->toString();
Я знаю, это будет звучать упрощенно, но если вам нужна просто отформатированная обычная дата, просто используйте встроенный объект даты в php. Я гарантирую, вы увидите большую разницу в скорости.
ОБНОВИТЬ:
Если вы действительно хотите настроить класс для повышения производительности, в этом посте есть пара патчей / настроек, которые вы можете применить.