Приветствую Вас, дорогой друг! Партнерская программа Бедный success php
Стандартный механизм хранения данных пользовательских сессий в php - хранение в файлах. Однако при работе приложения на нескольких серверах для балансировки нагрузки, возникает необходимость хранить данные сессий в хранилище, доступном каждому серверу приложения. В этом случае для хранения сессий хорошо подходит Redis .
Наиболее популярное решение - расширение phpredis . Достаточно установить расширение и настроить php.ini и сессии будут автоматически сохраняться в Redis без изменения кода приложений.
Однако такое решение имеет недостаток - отсутствие блокировки сессии.
При использовании стандартного механизма хранения сессий в файлах открытая сессия блокирует файл пока не будет закрыта. При нескольких одновременных обращениях доступ к сессии новые запросы будут ожидать, пока предыдущий не завершит работу с сессией. Однако при использовании phpredis подобного механизма блокировок нет. При нескольких асинхронных запросов одновременно происходит гонка, и некоторые данные, записываемые в сессию, могут быть утеряны.
Это легко проверить. Отправляем на сервер асинхронно 100 запросов, каждый из которых пишет в сессию свой параметр, затем считаем количество параметров в сессии.
Тестовый скрипт
Пункт 1 Пункт 2 Пункт 3 Пункт 4 Пункт 5 XML;
Пример 5Используем данные JSON. Входные параметры можно использовать в качестве атрибутов получаемого объекта.
$.ajax({ dataType: "json", url: "response.php?action=sample5", success: function(jsondata){ $(".results").html("Name = " + jsondata.name + ", Nickname = " + jsondata.nickname); } });
Сервер должен возвращать данные в формате JSON:
$aRes = array("name" => "Andrew", "nickname" => "Aramis"); require_once("Services_JSON.php"); $oJson = new Services_JSON(); echo $oJson->encode($aRes);