Мы используем класс Zend_Log для обновления нескольких разных таблиц базы данных «watchdog» (которые регистрируют различные события: запускаются пакетные сценарии, обрабатываются новые данные, генерируются файлы и т. Д.).
Здесьмой текущий код (перед проблемой я смотрю на исправление.)
$writer = new Zend_Log_Writer_Db($db, 'watchdog', array(
'priority' => 'priority',
'message' => 'message',
'owner' => 'owner',
));
$logger = new Zend_Log($writer);
$logger->setEventItem('owner', 'MODULE_NAME');
Это прекрасно работает.Но я хочу добавить столбец базы данных с именем datetime, который является вызовом time()
во время события.Итак, теоретически, это будет примерно так:
$writer = new Zend_Log_Writer_Db($db, 'watchdog', array(
'priority' => 'priority',
'message' => 'message',
'owner' => 'owner',
'datetime' => 'datetime',
));
$logger = new Zend_Log($writer);
$logger->setEventItem('owner', 'MODULE_NAME');
$logger->setEventItem('datetime', time());
Проблема, с которой я сталкиваюсь, заключается в том, что, очевидно, вызов time () запускается в первый раз, когда вызывается Zend_Log::setEventItem
ине когда Zend_Log::info()
вызывается.Итак, вопрос в том, как заставить time()
быть вызванным и сохраненным в моей БД при вызове Zend_Log::info()
?Нужно ли будет расширять Zend_Log_Writer_Db
более специальным классом?