2013-09-24 4 views
0

Итак, вопрос немного сложный, позвольте мне объяснить. Мой код страницы работает следующим образом:Как отслеживать данные нескольких запросов от одного и того же пользователя в сеансах PHP?

  1. Пользователь вводит запрос в поле поиска и нажимает отправить.

    1.1 jQuery загружает новое тело для отображения данных о ходе работы.

    1.2 jQuery вызывает process.php через AJAX и поставляет запрос в качестве аргумента.

    1.3 jQuery запускает setInterval периодическое обновление для захвата данных прогресса, хранящихся в $ _SESSION ['prog'], и отображает его.

  2. Когда процесс.php заканчивается, jQuery останавливает периодическое обновление, отображает окончательную информацию и вызывает AJAX, чтобы очистить переменную $ _SESSION ['prog'].

В данных прогресса момент хранится внутри одной переменной, которая прекрасно, насколько разные пользователи обеспокоены (из-за различных сеансов), но если тот же пользователь должны были сделать несколько запросов одновременно , переменная $ _SESSION ['prog'] была бы перекрестно перезаписана.

До сих пор я думал, что из двух идей! Отличить данные для каждого запроса от того же пользователя (такая же сессия)

  1. Есть JQuery сгенерировать случайную строку и отправить его вместе с запросом (и надеется избежать если это было маловероятно)

  2. Сделайте 2 вызова AJAX, сначала запрос new_request_id, второй посылая запрос и new_request_id в качестве параметров.

  3. Имейте AJAX, чтобы вернуть что-то из PHP до завершения (завершает).

Мне нужно подключить каждое окно браузера (каждый запрос) с каждым запущенным процессом, поэтому я не могу отправить обратно новый идентификатор запроса после того как запрос был подан, потому что я не буду знать, какие данные, чтобы забрать с JQuery в в окне браузера. Btw, я буду менять $ _SESSION ['prog'] на $ _SESSION [request_id] -> request_id, что я ищу.

Это (request_id) может быть last_insert_id(), потому что im создает новые записи БД для каждого допустимого запроса, но я не знаю, как вернуть его в каждое отдельное окно пользователя.

Мне нужен совет здесь. Только что начатый код в PHP, AJAX и jQuery, не очень много знают о сеансах. Как мне решить эту проблему?

Извините за недостаток кода, я вставлю его по запросу.

ответ

0

Вы можете добавить уникальный идентификатор к каждому запросу в дополнение к идентификатору сеанса. например. uniqid() in javascript/jquery?

0

Необходимо каким-то образом их отличить. Например, используйте уникальное поле идентификатора автозапуска. MySQL имеет last_insert_id(), что очень полезно и правильно обрабатывает параллельные запросы.

0

Избегайте использования переменных Session в запросах Ajax. Отправьте их с помощью GET (или POST).Даже если вы звоните Session_start(); в запрос Ajax и получаете $_SESSION['prog'], результаты могут быть неожиданными.

Смежные вопросы