使用ajax每1分钟操作一次XML文件,把当前时间记录进XML;
服务器操作系统是Windows2003,经常出现系统打不开,需要重启服务器才可以.
我在我的XP系统上面一个人调试,没有出现过问题,不知道是不是服务器上同时访问人多出现的问题.
JS代码如下:
[code]function InsertRefreshTime() {
var StaffId = $get('txtStaffId').value;
var StaffName = $get('txtStaffName').value;
var SiteId = $get('txtSiteId').value;
//1.更新當前在綫時間
OnlineService.InsertRefreshTime(StaffId,StaffName,SiteId,onSucceed,onFailed);
//2.查看轉發的有沒有被處理.1)轉發人員在綫的但沒有被刪除的,保持不動
// 2)轉發人員不在綫的,更換轉發人員,同時更新TSS_WAKE資料
RefreshEscalateListByStaffId();
//3.轉發人員搜集需要處理的問題,現在處理的刪除,不然保持不動.
GetEscalateListByStaffId();
//4.提醒轉發被關閉
IsCloseEscalateList();
}
setInterval(InsertRefreshTime,60000); //定时每间隔1分钟循环执行
[/code]
CS部分代码:
[code]
public static readonly string OnlinePath = ConfigurationManager.AppSettings["OnlinePath"]; //XML文件路径
private static object objectLock = new object();
//更新用户在线时间
public static void CreateStaffToList(OnlineInfo onlineInfo)
{
bool isExist = false;
lock (objectLock)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(OnlinePath);
//
XmlNodeList nodeList = xmlDoc.SelectSingleNode("OnlineList").ChildNodes;//获取OnlineList节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == onlineInfo.StaffId)//如果StaffId属性值为strStaffId
{
isExist = true;
break;
}
}
if (!isExist)
{ //新增用户节点
XmlNode root = xmlDoc.SelectSingleNode("OnlineList");//查找<OnlineList>
XmlElement xe1 = xmlDoc.CreateElement("Staff");//创建一个<Staff>节点
xe1.SetAttribute("StaffId", onlineInfo.StaffId);//设置该节点StaffId属性
XmlElement xesub1 = xmlDoc.CreateElement("StaffName");
xesub1.InnerText = onlineInfo.StaffName;//设置文本节点
xe1.AppendChild(xesub1);//添加到<Staff>节点中
XmlElement xesub2 = xmlDoc.CreateElement("SiteId");
xesub2.InnerText = onlineInfo.SiteId;
xe1.AppendChild(xesub2);
XmlElement xesub3 = xmlDoc.CreateElement("RefreshTime");
xesub3.InnerText = onlineInfo.RefreshTime;
xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<OnlineList>节点中
//xmlDoc.Save(HttpContext.Current.Server.MapPath(OnlinePath));
}
else
{//刷新用户在线时间
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == onlineInfo.StaffId)//如果StaffId属性值为strStaffId
{
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "RefreshTime")//如果找到
{
xe2.InnerText = onlineInfo.RefreshTime;//则修改
break;//找到退出来就可以了
}
}
break;
}
}
}
xmlDoc.Save(OnlinePath);
xmlDoc = null;
}
}//判断用户是否在线
public static bool IsOnlineByStaffId(string strStaffId,string strCurrentTime)
{
string strRefreshTime = string.Empty;
lock (objectLock)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(OnlinePath);
//xmlDoc.Load(HttpContext.Current.Server.MapPath(OnlinePath)); XmlNodeList nodeList = xmlDoc.SelectSingleNode("OnlineList").ChildNodes;//获取OnlineList节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == strStaffId)//如果StaffId属性值为strStaffId
{
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "RefreshTime")//如果找到
{
strRefreshTime = xe2.InnerText;//则修改
break;//找到退出来就可以了
}
}
break;
}
}
if (strRefreshTime.Length == 0)
return false;
else
{
DateTime dtCurrentTime = Convert.ToDateTime(strCurrentTime);
DateTime dtRefreshTime = Convert.ToDateTime(strRefreshTime);
TimeSpan ts = dtCurrentTime.Subtract(dtRefreshTime);
int intTimeSpan = Convert.ToInt32(ts.TotalSeconds.ToString());
if (intTimeSpan < 60)
return true;
else
return false;
}
} }
[/code]
服务器操作系统是Windows2003,经常出现系统打不开,需要重启服务器才可以.
我在我的XP系统上面一个人调试,没有出现过问题,不知道是不是服务器上同时访问人多出现的问题.
JS代码如下:
[code]function InsertRefreshTime() {
var StaffId = $get('txtStaffId').value;
var StaffName = $get('txtStaffName').value;
var SiteId = $get('txtSiteId').value;
//1.更新當前在綫時間
OnlineService.InsertRefreshTime(StaffId,StaffName,SiteId,onSucceed,onFailed);
//2.查看轉發的有沒有被處理.1)轉發人員在綫的但沒有被刪除的,保持不動
// 2)轉發人員不在綫的,更換轉發人員,同時更新TSS_WAKE資料
RefreshEscalateListByStaffId();
//3.轉發人員搜集需要處理的問題,現在處理的刪除,不然保持不動.
GetEscalateListByStaffId();
//4.提醒轉發被關閉
IsCloseEscalateList();
}
setInterval(InsertRefreshTime,60000); //定时每间隔1分钟循环执行
[/code]
CS部分代码:
[code]
public static readonly string OnlinePath = ConfigurationManager.AppSettings["OnlinePath"]; //XML文件路径
private static object objectLock = new object();
//更新用户在线时间
public static void CreateStaffToList(OnlineInfo onlineInfo)
{
bool isExist = false;
lock (objectLock)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(OnlinePath);
//
XmlNodeList nodeList = xmlDoc.SelectSingleNode("OnlineList").ChildNodes;//获取OnlineList节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == onlineInfo.StaffId)//如果StaffId属性值为strStaffId
{
isExist = true;
break;
}
}
if (!isExist)
{ //新增用户节点
XmlNode root = xmlDoc.SelectSingleNode("OnlineList");//查找<OnlineList>
XmlElement xe1 = xmlDoc.CreateElement("Staff");//创建一个<Staff>节点
xe1.SetAttribute("StaffId", onlineInfo.StaffId);//设置该节点StaffId属性
XmlElement xesub1 = xmlDoc.CreateElement("StaffName");
xesub1.InnerText = onlineInfo.StaffName;//设置文本节点
xe1.AppendChild(xesub1);//添加到<Staff>节点中
XmlElement xesub2 = xmlDoc.CreateElement("SiteId");
xesub2.InnerText = onlineInfo.SiteId;
xe1.AppendChild(xesub2);
XmlElement xesub3 = xmlDoc.CreateElement("RefreshTime");
xesub3.InnerText = onlineInfo.RefreshTime;
xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<OnlineList>节点中
//xmlDoc.Save(HttpContext.Current.Server.MapPath(OnlinePath));
}
else
{//刷新用户在线时间
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == onlineInfo.StaffId)//如果StaffId属性值为strStaffId
{
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "RefreshTime")//如果找到
{
xe2.InnerText = onlineInfo.RefreshTime;//则修改
break;//找到退出来就可以了
}
}
break;
}
}
}
xmlDoc.Save(OnlinePath);
xmlDoc = null;
}
}//判断用户是否在线
public static bool IsOnlineByStaffId(string strStaffId,string strCurrentTime)
{
string strRefreshTime = string.Empty;
lock (objectLock)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(OnlinePath);
//xmlDoc.Load(HttpContext.Current.Server.MapPath(OnlinePath)); XmlNodeList nodeList = xmlDoc.SelectSingleNode("OnlineList").ChildNodes;//获取OnlineList节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == strStaffId)//如果StaffId属性值为strStaffId
{
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "RefreshTime")//如果找到
{
strRefreshTime = xe2.InnerText;//则修改
break;//找到退出来就可以了
}
}
break;
}
}
if (strRefreshTime.Length == 0)
return false;
else
{
DateTime dtCurrentTime = Convert.ToDateTime(strCurrentTime);
DateTime dtRefreshTime = Convert.ToDateTime(strRefreshTime);
TimeSpan ts = dtCurrentTime.Subtract(dtRefreshTime);
int intTimeSpan = Convert.ToInt32(ts.TotalSeconds.ToString());
if (intTimeSpan < 60)
return true;
else
return false;
}
} }
[/code]
JS代码如下:
function InsertRefreshTime() {
var StaffId = $get('txtStaffId').value;
var StaffName = $get('txtStaffName').value;
var SiteId = $get('txtSiteId').value;
//1.更新當前在綫時間
TSSsystem.Web.OnlineService.InsertRefreshTime(StaffId,StaffName,SiteId,onSucceed,onFailed);
//2.查看轉發的有沒有被處理.1)轉發人員在綫的但沒有被刪除的,保持不動
// 2)轉發人員不在綫的,更換轉發人員,同時更新TSS_WAKE資料
RefreshEscalateListByStaffId();
//3.轉發人員搜集需要處理的問題,現在處理的刪除,不然保持不動.
GetEscalateListByStaffId();
//4.提醒轉發被關閉
IsCloseEscalateList();
}
setInterval(InsertRefreshTime,60000); //定时每间隔1分钟循环执行
public static readonly string OnlinePath = ConfigurationManager.AppSettings["OnlinePath"]; //XML文件路径
private static object objectLock = new object();
//刷新用户在线时间
public static void CreateStaffToList(OnlineInfo onlineInfo)
{
bool isExist = false;
lock (objectLock)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(OnlinePath);
//開始處理
XmlNodeList nodeList = xmlDoc.SelectSingleNode("OnlineList").ChildNodes;//获取OnlineList节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == onlineInfo.StaffId)//如果StaffId属性值为strStaffId
{
isExist = true;
break;
}
}
if (!isExist)
{//新增Staff
XmlNode root = xmlDoc.SelectSingleNode("OnlineList");//查找<OnlineList>
XmlElement xe1 = xmlDoc.CreateElement("Staff");//创建一个<Staff>节点
xe1.SetAttribute("StaffId", onlineInfo.StaffId);//设置该节点StaffId属性
XmlElement xesub1 = xmlDoc.CreateElement("StaffName");
xesub1.InnerText = onlineInfo.StaffName;//设置文本节点
xe1.AppendChild(xesub1);//添加到<Staff>节点中
XmlElement xesub2 = xmlDoc.CreateElement("SiteId");
xesub2.InnerText = onlineInfo.SiteId;
xe1.AppendChild(xesub2);
XmlElement xesub3 = xmlDoc.CreateElement("RefreshTime");
xesub3.InnerText = onlineInfo.RefreshTime;
xe1.AppendChild(xesub3); root.AppendChild(xe1);//添加到<OnlineList>节点中
//xmlDoc.Save(HttpContext.Current.Server.MapPath(OnlinePath));
}
else
{//刷新Staff在綫時間
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == onlineInfo.StaffId)//如果StaffId属性值为strStaffId
{
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "RefreshTime")//如果找到
{
xe2.InnerText = onlineInfo.RefreshTime;//则修改
break;//找到退出来就可以了
}
}
break;
}
}
}
xmlDoc.Save(OnlinePath);
xmlDoc = null;
}
}
//判断用户是否在线
public static bool IsOnlineByStaffId(string strStaffId,string strCurrentTime)
{
string strRefreshTime = string.Empty;
lock (objectLock)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(OnlinePath);
//xmlDoc.Load(HttpContext.Current.Server.MapPath(OnlinePath)); XmlNodeList nodeList = xmlDoc.SelectSingleNode("OnlineList").ChildNodes;//获取OnlineList节点的所有子节点
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("StaffId") == strStaffId)//如果StaffId属性值为strStaffId
{
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "RefreshTime")//如果找到
{
strRefreshTime = xe2.InnerText;//则修改
break;//找到退出来就可以了
}
}
break;
}
}
if (strRefreshTime.Length == 0)
return false;
else
{
DateTime dtCurrentTime = Convert.ToDateTime(strCurrentTime);
DateTime dtRefreshTime = Convert.ToDateTime(strRefreshTime);
TimeSpan ts = dtCurrentTime.Subtract(dtRefreshTime);
int intTimeSpan = Convert.ToInt32(ts.TotalSeconds.ToString());
if (intTimeSpan < 60)
return true;
else
return false;
}
} }