В сети есть множество примеров подобных проблем, но ни одно из их решений, похоже, не исправляет этот конкретный вариант. Мы ценим любые предложения.
Обычно эта проблема возникает из-за того, что мошенническая ссылка приводит к тому, что запрос ресурсов типа файла favicon или css попадает в диспетчер более одного раза, вызывая тем самым несколько процессов отправки и, следовательно, несколько строк в вашей базе данных.
Я проверил, что все ссылки на этой очень простой примерной странице действительно разрешают ресурс, на который они указывают.
Обработчик сеанса настраивается следующим образом:
Zend_Db_Table_Abstract::setDefaultAdapter($db);
Zend_Session::setSaveHandler(new
Zend_Session_SaveHandler_DbTable($config->session->toArray()));
Ведение журнала БД настраивается следующим образом:
$writer = new Zend_Log_Writer_Db($db, $config->log->tableName,
$config->log->columnMap->toArray());
$logger = new Zend_Log($writer);
Оба объекта настроены правильно и могут читать и записывать в базу данных и из нее. Только все происходит дважды. Если я помещаю тестовое сообщение в любое место приложения, оно записывается в базу данных дважды. Если я увеличиваю три переменные при каждом обращении к действию индекса - одну сохраняемую в сеансе, другую передаемую через объект Zend_Registry и другую локальную для indexAction - только переменная сеанса увеличивается на 2. Журнал доступа Apache показывает правильное количество запросов запускаются при загрузке страницы, и все они имеют хорошие коды ответа 200 или 304 (без изменений).
Я попытался отключить все ссылки на заголовки.
Я попытался отключить макет полностью.
Я локализовал все для диспетчера и вышел перед запуском диспетчеризации.
Во всех случаях происходит дополнительная запись / приращение.
Какие-нибудь мысли?
Заранее спасибо за любую помощь.