我想向PHP页面发送“Fire and Forget”查询

时间:2009-07-27 21:51:44

标签: php asp.net html http

我正在实现各种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”似乎是这里最好的比喻。

任何提示?

谢谢!

3 个答案:

答案 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;
}