2

我想在 Wordpress 博客中注册对某个帖子的所有访问。收集的数据被发送到外部服务器,我在其中收集此博客和其他来源的信息。

到目前为止,我解决这个问题的方法是使用 hook wp_footer,向远程服务器添加异步 JSONP 调用。但是这种方式给生成的 HTML 增加了一点开销,并且取决于用户是否启用了 javascript。

现在,我正在尝试做同样的事情,但通过 php 代码、使用 curl 或任何类似的库进行外部调用。这里的问题是增加了页面生成时间的延迟,这可能会影响用户体验。发送内容并关闭 HTTP 连接后有什么好的方法吗?Wordpress 挂钩shutdown是否有效?

4

1 回答 1

1

这对我有用。请注意,如果您不想依赖 WordPress 配置,PHP 具有本机关闭功能。从 send-server.com 你可以做这样的事情:

function do_php_shutdown_function(){
    //do your request here
    $param1 = urlencode($param1);
    $param2 = urlencode($param2);
    $request = "http://external-server.com/script.php?param1={$param1}&param2={$param2}";
    get_headers($request);
}
register_shutdown_function( 'do_php_shutdown_function');

在 external-server.com 上的 script.php 中,您将拥有如下内容:

header("Access-Control-Allow-Origin: http://sending-server.com");
header("HTTP/1.0 204 No Content");
$param1 = urldecode($_GET['param1']);
$param2 = urldecode($_GET['param2']);
//do stuff

header("HTTP/1.0 204 无内容"); 应该立即关闭连接,但脚本将继续执行。有关更多信息,请参阅:从 PHP 发送 HTTP 请求而不等待响应?

于 2015-11-06T13:52:40.873 回答