Длинна сессии
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Длинна сессии Expand / Collapse
Автор
Сообщение
31.01.2006 14:55
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
есть ли какое нибудь ограничение на длинну сессии. проблема в том, что сайт берет информацию из БД SQL Server , при показе какого-то числа объектов, выбранных из базы сессия теряется. Т.Е. если я отображаю по 100 автомобилей на странице, они показываются но пользователь разлогинивается. если же например отображаю 50 машин, то все нормально и пользователь сохраняет свой логин необходимое время.
от чего такое может быть?
Сообщ. #889817
31.01.2006 15:20
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Каких-то явных ограничений (кроме объема памяти) нет, хотя, конечно, чем меньше хранится в сессии тем лучше.

На чем написан сайт? Покажи свой код вывода списка машин чтобы можно было понять каким образом его отображение завязанно на сессии. Также интересует каким образом сделана аутентфикация пользователя. Не зная всего этого тебе невозможно будет помочь.
Сообщ. #889822
06.02.2006 6:37
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
сайт написан на asp+xslt+SQL Server 2000, весь выбор из бд производится при помощи разных user_defined_function, функция, которая в данном случае выбирает автомобили, работает нормально и выбирает все нужные машины:
CREATE FUNCTION dbo.[tis__SMmachinesVse](@sortField nvarchar(256), @sortOrder nvarchar(256))--, @type int
RETURNS TABLE
AS
RETURN select

sm.statusNum SMstatusNum,
SMmark.name SMmarkName,
mo.name SMmodelName,
..........
wo.name SMwholeName,
m.[id],
from SMmachine m

left join SMmodel mo on mo.id=m.SMmodel
.......


машин получается много и если показывать больше 50 на странице (так хочет заказчик), теряется пользователь.
при этом в сесии ничего не хранится, кроме текущего пользователя. Код asp вызывает выполнение данной функции и на основе этой выборки формируется xml-модель содержания страницы. после этого xslt представляет xml код в нужном виде уже на старнице.
выглядит это примерно так:

adminusergbEditoruser.........


все данные о пользователях хранятся в отдельных таблицах. система идентифицирует пользователя и хранит его логин в сессии.
Сообщ. #890065
06.02.2006 11:50
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Все это хорошо, но информации еще не достаточно. Покажи еще ASP код вызова функции и формирования xml.

И, кстати, почему используются UDF, а не хранимые процедуры?
Сообщ. #890086
06.02.2006 12:45
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
в общем, в asp вызывается функция getObjectsAndPresent, которая описана отдельно как и все функции отдельно.
код asp выглядит так:
var sortField = "SMmarkName, SMmodelName, SMstatusNum";
var sortOrder = "asc";
appendAttribute(xmlDOM.documentElement, 'status', status);
var str = " "+q(sortField)+", "+q(sortOrder)+" ";
var customFilter = "SMstatusNum not in (8,18,23)";
getObjectsAndPresent(SMmachine, 'tis__SMmachinesVse',str, null, null, 50);
browseXML('SM/status-find');


функция getObjectsAndPresent выглядит так:
// Функция получения объектов и представления их в виде XML =====================================
function getObjectsAndPresent(objectConstructor, sqlFunctionName,sqlParam, nodeName, suffix, size........, customFilter)
{
var Obj = new objectConstructor();
var defaults = new Defaults();
if(suffix==null){suffix=''};
if(Obj.getDefaults) defaults = Obj.getDefaults();

if(nodeName==null) nodeName = defaults.listNodeName;

if(page==null&&page!=false) page = getParam('table'+suffix+'.page', defaults.page);
if(size==null&&size!=false) size = getParam('table'+suffix+'.size', defaults.size);
........
if(page==false) page = null;
if(size==false) size = null;
..........
var e = new List();
var eXml;
//Response.Write(page);
try{
e = getObjects(objectConstructor, sqlFunctionName, sqlParam, size, ......., customFilter);
}catch(ex){error(ex)}
if(typeof(nodeName)=='string'){
eXml = xmlDOM.documentElement.appendChild(xmlDOM.createElement(''+nodeName));
}else{
eXml = nodeName
};
if(Obj.isEditable()) appendAttribute(eXml, '_editable', 'true');
appendNavigateNode(eXml, e, size, page, ......, customFilter);
for(var i=0;i return true;
}//getObjectsAndPresen


каждая таблица бд имеет в системе соответствующий класс, где прописаны как раз добавление, удаление, формирование xml и т.д. Для данного случая используется класс со следующими методами:
 this.loadFromFullForm = function(prefix){
if(prefix==null) prefix='';
try{

this.id = getFromForm(prefix+'SMmachine.id');
this.SMmodel = getFromForm(prefix+'SMmachine.SMmodel');
this.SMYearMark = getFromForm(prefix+'SMmachine.SMYearMark');
this.integration = getFromForm(prefix+'SMmachine.integration');
.......
return this.id;
}catch(ex){fError(ex, "SMmachine.loadFromFullForm()");return false}
}//loadFromFullForm()

this.presentAsXML = function(parentNode, nodeName, xml){
try{
if(parentNode==null) parentNode = xmlDOM.documentElement;
if(nodeName==null) nodeName = 'SMmachine';
if(xml==null) xml = parentNode.ownerDocument;
var e = xml.createElement(nodeName);
var attrs = e.attributes;


appendAttribute(e, 'id', this.id);
appendAttribute(e, 'SMmarkName', this.SMmarkName);
appendAttribute(e, 'SMmodel', this.SMmodel);
appendAttribute(e, 'SMmodelName', this.SMmodelName);

appendAttribute(e, 'SMYearMark', this.SMYearMark);
appendAttribute(e, 'SMYearMarkName', this.SMYearMarkName);

appendAttribute(e, 'integration', this.integration);
...........

if(this.isEditable()) appendAttribute(e, '_editable', 'true');

parentNode.appendChild(e);
return e;
}catch(ex){fError(ex, 'SMmachine.presentAsXML()');return false}
}//presentAsXML

this.isEditable = function(){if(userIsEditor()) return true; return false}
this.isViewable = function(){return true}


this.getDefaults = function(){
var res = new Defaults();
res.objName = 'SMmachine';
res.nodeName = 'SMmachine';
res.listNodeName = 'SMmachines';
res.sqlParam = getParam('table-parent','null');
res.listFunctionName = 'tis__SMmachines';
res.sortField = sortField;
res.sortOrder = sortOrder;

res.size = '10';//количество элементов на странице по умолчанию
return res;
}//getDefaults
Сообщ. #890090
07.02.2006 13:21
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum Member

участник
Last Login: 05.04.2007 15:08
Сообщ.: 27, Visits: 299
!!!! теперь и при 50 вылетает :(
Сообщ. #890234
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 4:05