我正在实现各种PHP&面向客户的ASP.NET Web应用程序。
我想安装一个非常低开销的用户跟踪系统。 (它必须在Intranet上,这只是一个内部系统)。
我想做以下事情:
line 1 normal code
line 2 normal code
line 3 Send Request/Query/Info to http://internal-IP/userTracker.php?Name=UserName&Page=...
line 4 Code that proceeds immediately after line 3 without waiting for a reply of any sort.
“Fire and Forget”似乎是这里最好的比喻。
任何提示?
谢谢!
答案 0 :(得分:6)
这几乎是AJAX的教科书案例。从本质上讲,您将启动该URL的rqeuest,并继续正常执行代码。
这是jQuery中的一个示例(假设您要发布到URL)。其他图书馆可能不同。正如没有任何js lirbaries那样。
//some code
$.get("http://internal-IP/userTracker.php?Name=UserName", function() {
//put something here if you want to verify the request worked.
});
//some more code
浏览器将触发请求,“更多代码”将继续执行而不会阻止请求。
答案 1 :(得分:3)
理论一:如果你能避免它,甚至不用服务器代码来处理请求。通常,人们使用不可见的“跟踪图像”,它只是一个< img>用src =“http://internal-IP/userTracker.php?Name = UserName& Page = ...”标记。这可以避免安全问题,让您的网络服务器直接与跟踪服务器通信。它也比ajax更好,因为它适用于任何域的组合。跟踪图像或ajax的问题是,如果您不希望您的用户直接点击跟踪服务器,而只想ping服务器到服务器......
理论二:避免使用AJAX和IMG,就像你最初建议的那样去服务器到服务器。这可能是更好的建议。你是用.NET编写这个并将它发送到PHP页面吗?如果是这样,上面的.NET代码将运行良好。即使你不关心这个反应,我仍然会通过异常处理来解决这个问题。
这就是我所拥有的一切。祝你好运!
答案 2 :(得分:2)
对于asp.net,您可以使用异步Web请求,并且只有一个虚拟方法,当请求返回给您时不执行任何操作(可能您要检查以确保它返回状态200?)。
如果您想在后面的代码中执行此操作,那么这是一个C#示例,但是thedz发布的示例适用于ASP.NET和PHP页面。
void SendRequest(string uri)
{
WebRequest request = HttpWebRequest.Create(uri);
request.Method = "GET";
request.BeginGetResponse(new AsyncCallback(ResponseReceived), null);
}
void ResponseReceived(IAsyncResult result)
{
return;
}