Контакты

Приветствую Вас, дорогой друг! Партнерская программа Бедный 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);



Понравилась статья? Поделитесь ей