Завершение сеанса активных пользователей веб-клиента
- экземпляр клиентского приложения «1С:Предприятие»
- экземпляр веб-приложения, где исполняется веб-клиент
- экземпляр внешнего соединения, полученный из объекта V83.COMConnector
- 1 экземпляр фонового задания
- 1 обращение к Web-сервису
В параметрах время засыпания сеанса и время удаления неиспользуемого спящего сеанса в разделе Администрирование/ Параметры информационной базы можно установить интервал времени, по истечении которого неактивный сеанс переводится в спящий режим и интервал времени, по истечении которого спящий сеанс завершается. Я предлагаю такие параметры параметры – 300 и 10 соответственно.
Если пользователь покидает базу (завершил сеанс) – его сеансовые данные удаляются. В режиме клиент сервер, сеансы хранятся на кластере серверов, за это отвечает менеджер кластера, именно для этого существует сервис сеансовых данных. Чтобы ускорить работу, данные сеансов кешируются в рабочих процессах и в толстых клиентах. При перезапуске кластера серверов данные сеансов будут сохранены. В том случае если активный пользователь не выполнил ни одного обращения к кластеру в течение 20-ти минут и сеанс не назначен соединению, то сеанс удаляется вместе с его данными. Для поддержания сеанса тонкий клиент и веб-клиент обеспечивают обращение к кластеру не реже 1 раза в 10 минут.
Однако. из-за нештатного завершения, сеанс может блокироваться и не переходить в спящий режим, и следовательно, завершиться автоматически не может и нужно их удалить через консоль сервера предприятия
Однако в файловом режиме, для снятия заблокированного сеанса веб-клиента не достаточно перезагружать web-сервер apache. Это обычно не помогает. Можно попытаться перезагружать ПК, где запущен браузер, но это тоже иногда не помогает. Лучше всего помогает запустить конфигуратор от имен администратора и снова опубликовать ИБ в разделе Администрирование/Публикация на веб- сервере.
Добрый день
Недавно добавил в конфигурацию Web-сервис, который по online оплате создает документ ППВходящеее
Функционал в общем работает, но заметил что иногда остаются зависшие соединения от приложения “Модуль расширения веб-сервиса”
Подскажите в чем может быть причина и куда смотреть ?
1С:Предприятие 8.3.15.1778
“УПП”, редакция 1.2.6.7, существенно доработана
Обычное приложение, база клиент-серверная
Попробуйте найти в Google почему браузер некорректно завершает работу. Я точно могу сказать, что если сеанс работы с браузером некорректно завершен , то это сессия будет висеть в списке активных пользователей – Это аксиома! и поэтому Вам нужно найти причины того, что браузер некорректно завершает работу. Я не думаю, что причина связана с Вашим программным кодом сервиса. Тем более, Вы сами сказали, что программный код работает. Кроме того, в документации по платформе 1С есть материал о том, что не поддерживается в веб-браузерах Google Chrome и Safari . Но я не думаю, что Вы используйте методы и обращения, которые браузеры не поддерживают. Иначе была бы ошибка выполнения
Добрый день
Благодарю за ваш ответ.
Хочу уточнить такие нюансы:
1)зависает именно соединение от модуля расширения, а зависших сеансов специально созданного под эту задачу пользователя WEB-сервис никогда не наблюдал
2)сам внешний вызов веб-сервиса выполняется не из браузера, а из некой “прокладки” через стандартный вызов средствами soap в php
3)веб-сервис возвращает назад код исполнения, и ошибок программного плана не бывает
Мой ответ относится к HTTP сервисам, когда обращение к сервису выполняется HTTP запросом из браузера. В Вашем примере обращение к web-сервису выполняется из стороннего приложения на php , а не на 1С . Нужно посмотреть тело процедуры обращения к web-сервису. Сеанс завершается не тогда, когда получаешь ответ от сервера, а когда созданное соединение становится неопределенным при выходе процедуры . Это значит, что в качестве параметра не рекомендуется передавать объекты типа WSОпределения или WSПрокси. Их нужно создавать в теле процедуры обращения : Например обращения из 1С:
Процедура МоеОбращениеКСервису()
Определение = Новый WSОпределения(“http://192.168.1.1/WEB_Service/ws/request.1cws?wsdl”);
Прокси = Новый WSПрокси(Определение, “http://192.168.1.1/request”, “DocumentsData”, “DocumentsDataSoap”);
ДанныеЗаявки = Прокси.GetData(Клиент);
Прокси = Неопределено; // не обязательно, но данная команда должна завершать сеанс
// Обработка полученного ответа
КонецПроцедуры