неверные данные в PHP-сессии - PullRequest
2 голосов
/ 10 июня 2011

У меня есть следующие настройки для интернет-магазина: Когда пользователь входит в систему, через AJAX вызывается скрипт, который проверяет пользовательские данные на SOAP-Webservice и возвращает пользовательские данные.Пока пользователь вошел в систему, пользовательские данные сохраняются в сеансе PHP.Пользовательские данные извлекаются только с помощью SOAP и не сохраняются в магазине.Я использую обработчик сеанса PHP по умолчанию.Когда пользователь размещает заказ, на адрес пользователя отправляется электронное письмо с подтверждением.Объем трафика на сайте умеренный, около 100 заказов в день.

У меня есть следующая ошибка: Примерно раз в три месяца электронное письмо отправляется на неправильный адрес.Другие данные из сеанса в теле письма (ex.customerNo) верны, но, очевидно, значение адреса электронной почты неверно.

Вот что я обнаружил до сих пор: Каждый разэто произошло, пользователи, чьи адреса перепутались, вошли в систему в одно и то же время (+ - 2 секунды).Я безуспешно пытался воспроизвести это, войдя в систему одновременно с двумя разными пользователями и сравнив данные сеанса.

Предполагая, что данные, возвращенные из SOAP-Webservice, верны, что может вызвать эту проблему?

РЕДАКТИРОВАТЬ: Вот фрагменты кода для записи и чтения из сеанса и бит электронной почты, код которого находится вне контекста, я пропустил бит между ними:

РЕДАКТИРОВАТЬ2: удалил фрагменты кода как проблемуОказалось, что в реализации SOAP-сервиса произошла ошибка кэширования, вызванная для получения данных электронной почты.

1 Ответ

1 голос
/ 10 июня 2011

Каждый раз, когда это происходило, пользователи, адреса которых перепутались, входили в систему в одно и то же время (+ - 2 секунды).Я безуспешно пытался воспроизвести это, войдя в систему одновременно с двумя разными пользователями и сравнив данные сеанса.

Описанная вами проблема, скорее всего, возникла из-за чрезмерного усердного кэширования и / или проблем с даннымиутечка на одном или другом конце.

Я думаю, что очень маловероятно, что сессии запутываются в конце PHP - однако могут быть проблемы с псевдонимами сеансов в вашем коде.Было бы полезно узнать, работают ли ваши экземпляры PHP как разветвленные процессы или потоки.

Правильный способ проверить, существует ли проблема на удаленном сервере (что значительно выше, если удаленный сервер использует многопоточность) состоит в том, чтобы написать сценарий операции - НЕ использовать браузер - и выполнить тест сотни раз с разными парами учетных данных - не один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...