По сути, пользователи периодически видят и перезаписывают данные друг друга (очевидно, это очень плохо). Я пытался воссоздать поведение на моем сайте тестирования безрезультатно. На месте тестирования, счета упорно дисплей только свои собственные данные.
Это приложение с низким трафиком. В настоящее время он имеет менее 200 учетных записей пользователей.
Я счастлив опубликовать свой код, но я даже не уверен, какой код размещать.
Вещи, о которых я думал, которые могут вызвать такое поведение:
Нескольким пользователям случайно назначаются избыточные идентификаторы в базе данных.
Нету. Ограничения ключа базы данных запрещают это, как они должны.
Столкновения с идентификатором сессии.
Я сомневаюсь. Идентификаторы сессий устанавливаются PHP, я не возился с этим, поэтому они представляют собой большие длинные хеши MD5, какими они и должны быть.
Столкновение сессий в базе данных.
Наша таблица Sessions в базе данных имеет пять столбцов: sessionkey, uid, serieskey, expiration и ipaddress. Сессии создаются и удаляются, как и должно быть, когда пользователи входят и выходят из системы. Я смотрю это в режиме реального времени, и он отлично работает.
И все же на нашем тестовом сайте я не могу воспроизвести поведение. Даже с несколькими учетными записями, вошедшими одновременно с разных ip-адресов. Но пользователи определенно сообщают об этом на живом сайте, и я могу видеть результаты перезаписи данных друг друга в моей базе данных. Я в недоумении относительно того, почему это может происходить. Зная, что ты не видишь всю мою гигантскую кодовую базу (мне и двум другим понадобилось год, чтобы написать это), с чего бы ты начал искать дальше?
Проблема была в том, как мы создавали файлы cookie. Это была часть кода, над которым я никогда не работал. Когда мне удалось загнать парня, который написал эту часть, он точно знал, почему это происходит, и исправил это за минуту.
Других решений пока нет …